Alvaro Herrera wrote:
> Tom Lane wrote:
> > Alvaro Herrera <[EMAIL PROTECTED]> writes:
> > > What I'm requesting here is that the sleep in count_nondeletable_pages()
> > > be removed and that change backpatched to 8.2 and 8.1.
> > 
> > Are you sure that that is, and always will be, the only sleep in that
> > part of the code path?
> 
> It is currently, as far as I can see, the only sleep.  I think we could
> backpatch the removal of that call, and consider changing the
> cost_delay parameters when we acquire the exclusive lock in HEAD.

I noticed that autovacuum can reset VacuumCostDelay to a non-zero value
when the cost balancing code runs.  Of course, we can reset the target
value so that resetting it does not cause a problem.

I propose applying this patch from 8.1 onwards.  HEAD would get an
additional treatment to avoid the balancing problem.

Note that I am releasing the exclusive lock on the table after the
truncate is done.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Index: src/backend/commands/vacuumlazy.c
===================================================================
RCS file: /home/alvherre/cvs/pgsql/src/backend/commands/vacuumlazy.c,v
retrieving revision 1.61.2.2
diff -c -p -r1.61.2.2 vacuumlazy.c
*** src/backend/commands/vacuumlazy.c	4 Mar 2006 19:09:23 -0000	1.61.2.2
--- src/backend/commands/vacuumlazy.c	26 Jul 2007 06:01:59 -0000
*************** lazy_truncate_heap(Relation onerel, LVRe
*** 821,828 ****
  	vacrelstats->pages_removed = old_rel_pages - new_rel_pages;
  
  	/*
! 	 * We keep the exclusive lock until commit (perhaps not necessary)?
  	 */
  
  	ereport(elevel,
  			(errmsg("\"%s\": truncated %u to %u pages",
--- 821,829 ----
  	vacrelstats->pages_removed = old_rel_pages - new_rel_pages;
  
  	/*
! 	 * Release our exclusive lock before going away
  	 */
+ 	UnlockRelation(onerel, AccessExclusiveLock);
  
  	ereport(elevel,
  			(errmsg("\"%s\": truncated %u to %u pages",
*************** count_nondeletable_pages(Relation onerel
*** 854,861 ****
  		bool		tupgone,
  					hastup;
  
- 		vacuum_delay_point();
- 
  		blkno--;
  
  		buf = ReadBuffer(onerel, blkno);
--- 855,860 ----
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to