powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Миграция на добавление внешнего ключа проходит очень долго.
2 сообщений из 2, страница 1 из 1
Миграция на добавление внешнего ключа проходит очень долго.
    #38689756
fdoo4un
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть 2 таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table_1
(
	id serial
);

create table_2
(
	id serial,
	table1_id integer
);



Таблица table_2 состоит из одной записи.
Таблица table_1 очень большая. Помимо этого, она достаточно интенсивно используется для записи в рамках транзакций.

Я делаю миграцию - навешиваю внешний ключ на таблицу table_2, который будет ссылаться на table_1. В итоге запрос:
Код: sql
1.
alter table table_2 add constraint "FK" foreign key(table1_id) references table_1 (id)

проходил очень долго.

Эксперименты показали, что если просто сделать
Код: sql
1.
SELECT id FROM table_1 WHERE id = 1;

в рамках транзакции, то ALTER TABLE не пройдет пока не завершится транзакция c SELECT.
Обычно такие запросы (миграции) проходят успешно.
Версия postgres - 9.1.5

С чем может быть связано такое поведение?
...
Рейтинг: 0 / 0
Миграция на добавление внешнего ключа проходит очень долго.
    #38689952
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fdoo4unУ меня есть 2 таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table_1
(
	id serial
);

create table_2
(
	id serial,
	table1_id integer
);



Таблица table_2 состоит из одной записи.
Таблица table_1 очень большая. Помимо этого, она достаточно интенсивно используется для записи в рамках транзакций.

Я делаю миграцию - навешиваю внешний ключ на таблицу table_2, который будет ссылаться на table_1. В итоге запрос:
Код: sql
1.
alter table table_2 add constraint "FK" foreign key(table1_id) references table_1 (id)

проходил очень долго.

Эксперименты показали, что если просто сделать
Код: sql
1.
SELECT id FROM table_1 WHERE id = 1;

в рамках транзакции, то ALTER TABLE не пройдет пока не завершится транзакция c SELECT.
Обычно такие запросы (миграции) проходят успешно.
Версия postgres - 9.1.5

С чем может быть связано такое поведение?

поведение совершенно штатное... пока не завершаться ВСЕ транзакции цепляющие table ЛЮБОЙ alter на нее будет ждать.
В данном случае тоже самое касается и table_1 и table_2.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Миграция на добавление внешнего ключа проходит очень долго.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]