Received: from localhost (unknown [200.46.204.183]) by developer.postgresql.org (Postfix) with ESMTP id 8E03A2E003F for ; Mon, 9 Jun 2008 12:10:20 -0300 (ADT) Received: from developer.postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 94530-03 for ; Mon, 9 Jun 2008 12:10:09 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail128111.authsmtp.co.uk (outmail128111.authsmtp.co.uk [62.13.128.111]) by developer.postgresql.org (Postfix) with ESMTP id 028A32E0089 for ; Mon, 9 Jun 2008 12:09:53 -0300 (ADT) Received: from mail-c188.authsmtp.com (mail-c188.authsmtp.com [62.13.128.25]) by punt4.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m59F9e4I019122; Mon, 9 Jun 2008 16:09:40 +0100 (BST) Received: from [192.168.0.3] (85-211-228-245.dyn.gotadsl.co.uk [85.211.228.245]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m59F9bJ7069820; Mon, 9 Jun 2008 16:09:38 +0100 (BST) Subject: Re: pg_dump restore time and Foreign Keys From: Simon Riggs To: Tom Lane Cc: Decibel! , Andrew Dunstan , Robert Treat , pgsql-hackers@postgresql.org In-Reply-To: <19362.1213023432@sss.pgh.pa.us> References: <1212647003.19964.19.camel@ebony.site> <4847D4A7.70309@dunslane.net> <1212670595.19964.55.camel@ebony.site> <200806071308.00845.xzilla@users.sourceforge.net> <1212860515.12046.78.camel@ebony.site> <484ADAD4.2080701@dunslane.net> <19362.1213023432@sss.pgh.pa.us> Content-Type: text/plain Date: Mon, 09 Jun 2008 16:12:59 +0100 Message-Id: <1213024379.12046.111.camel@ebony.site> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: 140befc6-3636-11dd-aecc-001871e930f4 X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksacxtFaAxbZ0xf HGQLW1xEUVt7WWp/ aAIfZQBDYEtPQQdo WFZLRldNFgBqBAMB SEMbW297JX9BeHh5 bURiEHFSVEI0dEJ9 EBsCRmsbZmFjbn0e URQMalIBI1BXfh9E Yld+AXoOYTMDKBg1 TUcAHxkaHhhlExEd Wg46IU8XWQ4REyUg QAoPVSkuGEBNTiM/ ZzIhMFMdE0BZEUgj KjNh X-Authentic-SMTP: 61633235383639.cat.dmpriest.net.uk:1045/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200806/392 X-Sequence-Number: 119505 On Mon, 2008-06-09 at 10:57 -0400, Tom Lane wrote: > Decibel! writes: > > Actually, in the interest of stating the problem and not the > > solution, what we need is a way to add FKs that doesn't lock > > everything up to perform the key checks. > > Ah, finally a useful comment. I think it might be possible to do an > "add FK concurrently" type of command that would take exclusive lock > for just long enough to add the triggers, then scan the tables with just > AccessShareLock to see if the existing rows meet the constraint, and > if so finally mark the constraint "valid". Meanwhile the constraint > would be enforced against newly-added rows by the triggers, so nothing > gets missed. You'd still get a small hiccup in system performance > from the transient exclusive lock, but nothing like as bad as it is > now. Would that solve your problem? That's good, but it doesn't solve the original user complaint about needing to re-run many, many large queries to which we already know the answer. -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support