Re: Foreign key wierdness
От | Hannu Krosing |
---|---|
Тема | Re: Foreign key wierdness |
Дата | |
Msg-id | 1043085917.15257.6.camel@huli обсуждение исходный текст |
Ответ на | Re: Foreign key wierdness ("Dave Page" <dpage@vale-housing.co.uk>) |
Список | 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 по дате отправления: