On Tue, Feb 07, 2006 at 10:09:02PM +0000, Simon Riggs wrote: > On Thu, 2006-02-02 at 11:27 -0500, Marc Morin wrote: > > > > > 1- long running report is running on view > > > > 2- continuous inserters into view into a table via a rule > > > > 3- truncate or rule change occurs, taking an exclusive lock. > > > > Must wait for #1 to finish. > > > > 4- new reports and inserters must now wait for #3. > > > > 5- now everyone is waiting for a single query in #1. Results > > > > in loss of insert data granularity (important for our application). > > > Using a separate lock table is what we've decided to do in this > > particular case to serialize #1 and #3. Inserters don't take this lock > > and as such will not be stalled. > > Would it not be simpler to have the Inserters change from one table to > another either upon command, on a fixed timing cycle or even better > based upon one of the inserted values (Logdate?) (or all 3?). (Requires > changes in the application layer: 3GL or db functions). Unfortunately, AFAIK rule changes would suffer from the exact same problem, which will be a serious issue for table partitioning. If you try and add a new partition while a long report is running you'll end up blocking everything. ALso, IIRC the OP was trying *not* to have the locking system impose scheduling. I believe the intention is that either 1 not block 3 or 3 not block 4. I'm honestly somewhat surprised someone hasn't run into this problem with partitioning yet; or maybe everyone who needs to do long transactions just shoves those off to slony slaves... -- Jim C. Nasby, Sr. Engineering Consultant jnasby@xxxxxxxxxxxxx Pervasive Software http://pervasive.com work: 512-231-6117 vcard: http://jim.nasby.net/pervasive.vcf cell: 512-569-9461