LINUX.ORG.RU
ФорумAdmin

Postgres и тормоза при alter table


0

0

Решил перейти с mysql на postres. В принципе, все нормально, но в через некоторое время работы с БД при попытке добавить новое поле через alter table запрос просто висит (на проце при этом нагрузки нет). Ждал минут 10 не выдержал и прервал (так было несколько раз). Если перед исполнением этого запроса перезагрузить postgres сервер, то он проходит моментально. Подскажите, пожалуста, в чем здесь может быть дело?

Извинияюсь. Система Centos 5, Postgres 8.1.18.

UncleAndy ★★★
() автор топика

пока кто-то юзает эту таблицу(или базу, смотри доки за подробностями) оно не даст ничего с ней сделать.

true_admin ★★★★★
()

Ждёт какой-то лок. Может, это баг. А может просто кто-то начал транзакцию и не завершает её. Есть активные сеансы в тот момент, когда alter висит? Каким клиентом alter запускаешь, psql? Какие команды выполнял в том же сеансе до запуска alter?

const86 ★★★★★
()
Ответ на: комментарий от const86

Это вполне возможно, т.к. он используется из апача через постоянный коннект к БД. Такой лок может происходить и при чтении данной таблицы? При изменении я всегда коммит делаю после него.

Есть-ли возможность узнать что именно заблокировало таблицу?

UncleAndy ★★★
() автор топика
Ответ на: комментарий от const86

Alter запускаю через psql. Параллельно, как уже написал, с базой работают мои скрипты из апача.

UncleAndy ★★★
() автор топика
Ответ на: комментарий от real_maverick

О! Большое спасибо!

И еще небольшой вопрос - можно где-то задать время ожидания операции до выдачи ошибки при блокировке?

UncleAndy ★★★
() автор топика
Ответ на: комментарий от UncleAndy

log_min_error_statement (enum)

log_min_duration_statement (integer)

вот эти два параметра подвигай в конфиге, первым повысишь уровень логирования, второй при значении >0 будут логироватся sql которые выполняются более указанного времени, при =0 все sql логируются.

крайне полезно

p.s. конкретно про таймаут на локировку, вот так вот сразу наизусть не помню

real_maverick ★★★
()
Ответ на: комментарий от real_maverick

Всем спасибо! Вы очень помогли. Поставил commit во все подозрительные места - блокировок стало намного меньше и alter table работает как надо. :) Я уж начал бояться что опять на mysql переходить придется. :)))

UncleAndy ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.