Re: Performance hit of foreign key constraints?

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: Performance hit of foreign key constraints?
Дата
Msg-id 20030723074442.L69170-100000@megazone.bigpanda.com
обсуждение исходный текст
Ответ на Performance hit of foreign key constraints?  (Jean-Christian Imbeault <jc@mega-bucks.co.jp>)
Ответы Re: Performance hit of foreign key constraints?  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
Список pgsql-general
On Wed, 23 Jul 2003, Jean-Christian Imbeault wrote:

> I have a database which is constantly being written to. A web server's
> log file (and extras) is being written to it. There are no deletions or
> updates (at least I think so :).
>
> As the web traffic increases so will the write intensity.
>
> Right now the database tables have no foreign keys defined even though
> there are foreign keys. The code that inserts into the DB is simple
> enough (now) that we can make sure that nothing is inserted if the
> corresponding fk does not exist and that all fk checks pass.
>
> I want to add foreign key constraints to the table definitions but I am
> worried that it might be a big performance hit. Can anyone tell me how
> much of a performance hit adding one foreign key constraint to one field
> in a table will roughly be?

Well, generally speaking it'll be (assuming no ref actions - and covering
actions you aren't doing):
 one select for each insert to the table with the constraint
 one select for each update to the table with the constraint, in current
  releases unpatched
 one select for each update to the table with the constraint if the
  key is changed in patched 7.3 or 7.4beta.
 one select for each delete to the referenced table
 one select for each update to the referenced table if the key is changed
 plus management of the trigger queue (this can be an issue in long
  transactions since the queue can get big)
 and some misc. work in the triggers.

You really want the foregin key on the table with the constraint to be
indexed and using the index if you expect eitherof the referenced table
conditions to happen.



В списке pgsql-general по дате отправления:

Предыдущее
От:
Дата:
Сообщение: Re: 0/1 vs true/false
Следующее
От: Tom Lane
Дата:
Сообщение: Re: 0/1 vs true/false