Re: Are there known performance issues with defining all Foreign Keys as deferrable initially immediate

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/16/2012 11:37 PM, Tom Lane wrote:
Craig Ringer <ringerc@xxxxxxxxxxxxx> writes:
Found it, it's in the NOTES for CREATE TABLE.
http://www.postgresql.org/docs/current/static/sql-createtable.html:

When a UNIQUE or PRIMARY KEY constraint is not deferrable, PostgreSQL
checks for uniqueness immediately whenever a row is inserted or
modified. The SQL standard says that uniqueness should be enforced only
at the end of the statement; this makes a difference when, for example,
a single command updates multiple key values. To obtain
standard-compliant behavior, declare the constraint as DEFERRABLE but
not deferred (i.e., INITIALLY IMMEDIATE). Be aware that this can be
significantly slower than immediate uniqueness checking.

Note that that is addressing uniqueness constraints, and *only*
uniqueness constraints.  Foreign key constraints are implemented
differently.  There is no equivalent to an immediate check of a foreign
key constraint --- it's checked either at end of statement or end of
transaction, depending on the DEFERRED property.  So there's really no
performance difference for FKs, unless you let a large number of pending
checks accumulate over multiple commands within a transaction.

Ah, thanks. I missed that detail.

--
Craig Ringer



--
Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux