добавление ограничения внешнего ключа блокирует таблицу - PullRequest
2 голосов
/ 28 декабря 2010

У меня есть таблица "ааа", которая не очень большая. Он имеет менее 10 000 строк. Однако операции чтения в этой таблице очень часты.

Всякий раз, когда я пытаюсь создать новую таблицу "bbb" с внешним ключом, указывающим на "aaa". Операция блокируется, и чтение «ааа» невозможно. Запрос также никогда не завершается.

ALTER TABLE "bbb" ADD CONSTRAINT "topic_id_refs_id_3942a46c6ab2c0b4" FOREIGN KEY ("topic_id") REFERENCES "aaa" ("id") DEFERRABLE INITIALLY DEFERRED;

Текущий обходной путь - создание любой новой таблицы в непиковые часы, например, полночь после перезапуска базы данных.

Я хотел бы знать, есть ли какое-то правильное решение этого. Это проблема, затрагивающая все реляционные базы данных? Моя база данных - PostgreSQL 8.3.

1 Ответ

2 голосов
/ 28 декабря 2010

ALTER TABLE нужна блокировка таблицы, поэтому вы не можете использовать таблицу для чтения.Ваша проблема звучит как проблема с блокировками, проверьте pg_stat_activity, чтобы увидеть, что происходит.

Offtopic: Почему вы перезапускаете свою базу данных после полуночи?Мы никогда не перезапускаем базу данных, в этом нет необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...