Re: Foreign key wierdness - Mailing list pgsql-hackers

From Hannu Krosing
Subject Re: Foreign key wierdness
Date
Msg-id 1043085917.15257.6.camel@huli
Whole thread Raw
In response to Re: Foreign key wierdness  ("Dave Page" <dpage@vale-housing.co.uk>)
List pgsql-hackers
On Mon, 2003-01-20 at 15:47, Dave Page wrote:
> > -----Original Message-----
> > From: Tom Lane [mailto:tgl@sss.pgh.pa.us] 
> > Sent: 20 January 2003 15:28
> > To: Dave Page
> > Cc: PostgreSQL Hackers Mailing List; Didier Moens
> > Subject: Re: [HACKERS] Foreign key wierdness 
> > 
> > 
> > "Dave Page" <dpage@vale-housing.co.uk> writes:
> > > A pgAdmin user has noticed that Foreign Keys take 
> > significantly longer 
> > > to create when migrating a database in pgAdmin in v1.4.12 than in 
> > > v1.4.2.
> > 
> > The only reason ADD FOREIGN KEY would take a long time is if
> > (a) it has to wait awhile to get exclusive lock on either
> >     the referencing or referenced table; and/or
> > (b) it takes a long time to verify that the existing entries
> >     in the referencing table all have matches in the referenced table.
> >     (that's the behind-the-scenes query you see)
> > 
> > I'm betting that the table was busy, or there was a lot more 
> > data present in the one case, or you hadn't ever 
> > vacuumed/analyzed one or both tables and so a bad plan was 
> > chosen for the verification query. The schema reference is 
> > definitely not the issue.
> 
> Thing is Tom, this issue can be reproduced *every* time, without fail.
> The difference is huge as well, it's a difference of a couple of
> seconds, the total migration will take around 1704.67 seconds without
> schema qualification, and 11125.99 with schema qualification to quote
> one test run.

can you try running ANALYZE (or VACUUM ANALYZE) after importing data but
before creating the foreign keys ?

> As I understand it, this has be tried on a test box, and a production
> box (running RedHat builds of 7.3.1), and is a migration of the same
> source Access database.
> 
> I've been looking at his for some time now (couple of weeks or more),
> and the only thing I can find is the SELECT ... FOR UPDATE in the
> PostgreSQL logs that I quoted.

does this SELECT ... FOR UPDATE occur only when schemas are used ?

>  These exactly follow *every* fkey
> creation, and are definately not issued by pgAdmin. If they were issued
> by another app or user, how come they exactly follow each fkey creation,
> and are on the reference table of the fkey?

I think Tom was trying to tell that the backend code indeed runs this,
but that it should not be that slow.

-- 
Hannu Krosing <hannu@tm.ee>


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Foreign key wierdness
Next
From: "Dave Page"
Date:
Subject: Re: Foreign key wierdness