|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
Приветствую. В ночном задании при попытке удаления таблицы процесс удаления становится жертвой взаимоблокировки. ПОдскажите пожалуйста, как можно удалить таблицу и не стать жертвой? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 14:52 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
Приоритет мож процесса как-то повысить чтобы жертвой его не выбирали? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 15:27 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
В общем, есть огромная партичированная таблица. И удаляются части ее партиций. Можно ли как-то отключить перед удалением партицию, которую собираюсь удалить? Читаю сейчас про это: NO INHERIT таблица_родитель Эта форма удаляет целевую таблицу из списка потомков указанной родительской таблицы. Результаты запросов к родительской таблице после этого не будут включать записи, взятые из целевой таблицы. Вроде похоже на отключение, но никогда так не делал. Подскажите, можно ли ее Код: sql 1.
А потом: Код: sql 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 15:46 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерс, можно, но обычно одна ошибка при этом сменяется другой (другими) стесняюсь спросить -- в "головной" таблице ONLY у вас часом не завалялось записей ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 15:49 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqсникерс, можно, но обычно одна ошибка при этом сменяется другой (другими) стесняюсь спросить -- в "головной" таблице ONLY у вас часом не завалялось записей ? Ну а если сделать NO INHERIT пауза DROP ? про ONLY не понял.. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 16:00 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqодна ошибка при этом сменяется другой (другими) А можете сказать хоть примерно какие ошибки появляются? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 16:22 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсqwwqодна ошибка при этом сменяется другой (другими) А можете сказать хоть примерно какие ошибки появляются? поищите сами. вкратце -- ошибка выполнения уже стартовавших запросов к таблице, по причине либо недоступности спланированной в план таблички(DROP). либо отсутствия уже спланированного объекта (кажется колонки) в числе наследуемых (NO INHERIT). когда-то держал живую ссылку на оное ага , случайно вспомнил https://www.postgresql.org/message-id/4A083AAA.2020808@agama.tv -- это в момент дропа. про NO INHERIT с лёта не найду, но тоже приятно. про Код: sql 1.
-- "понаберут по объявлениям"(сс) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 16:44 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqсникерспропущено... А можете сказать хоть примерно какие ошибки появляются? поищите сами. вкратце -- ошибка выполнения уже стартовавших запросов к таблице, по причине либо недоступности спланированной в план таблички(DROP). либо отсутствия уже спланированного объекта (кажется колонки) в числе наследуемых (NO INHERIT). когда-то держал живую ссылку на оное ага , случайно вспомнил https://www.postgresql.org/message-id/4A083AAA.2020808@agama.tv]https://www.postgresql.org/message-id/4A083AAA.2020808@agama.tv -- это в момент дропа. про NO INHERIT с лёта не найду, но тоже приятно. про Код: sql 1.
-- "понаберут по объявлениям"(сс) В данном конкретном случае это не страшно, т.к. там только селекты идут. На счет ONLY почитал, но не совсем понял связь с вопросом. А скажите, есть ли какая-нибудь функция узнать родительскую таблицу для таблицы_партиции? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 17:43 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwq Код: sql 1.
В родительской пусто. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 17:47 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсА скажите, есть ли какая-нибудь функция узнать родительскую таблицу для таблицы_партиции? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 17:59 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерс, чо, и диплом купил ? Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 18:14 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqсникерс, чо, и диплом купил ? Код: sql 1. 2. 3. 4. 5. 6.
Да дорогие дипломы-то.... Спасибо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 18:17 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
Еще осталось придумать как паузу сделать между командами. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 18:17 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсЕще осталось придумать как паузу сделать между командами. пока не нашел как. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 18:31 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 18:32 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсЕще осталось придумать как паузу сделать между командами. а зачем ? если конечно не секрет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 18:53 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 18:53 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqсникерсЕще осталось придумать как паузу сделать между командами. а зачем ? если конечно не секрет. Сделал так: Код: sql 1. 2. 3. 4. 5.
Но паузы в 60 сек оказалось недостаточно. С первого раза не удаляется таблица. А расчитывал на то что select-ы за время паузы завершаться, а новые таблица_родитель уже будут без использования таблица_партиция, которую надо удалить. Но это в теории, на практике как лучше реализовать я не знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 18:57 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
ursidoсникерс, pg_sleep(100) не надо учить детей плохому. кстати недавно заметил, что пжодмин3 под линухами ведёт себя много много хуже , чем пжодмин под виндой. когда одновременно пытаешься работать в разных конкурирующих окнах--сеансах. до того плохо, что пришлось из psql cancel-ить бекенды, после попытки cancel-нуть сеанс, с детским pg_sleep(1000) в dblink. всегда знал, что гуй в линухах для проформы. из говна и палок ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 19:00 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерс Код: sql 1. 2. 3. 4. 5.
это всё в одной транзакции ? или вы транзакций не различаете ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 19:02 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqне надо учить детей плохому. Здесь не приветствуется мат, упоминание падших женщин и массовые расстрелы. Остается только это. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 19:03 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqursidoсникерс, pg_sleep(100) не надо учить детей плохому. кстати недавно заметил, что пжодмин3 под линухами ведёт себя много много хуже , чем пжодмин под виндой. когда одновременно пытаешься работать в разных конкурирующих окнах--сеансах. до того плохо, что пришлось из psql cancel-ить бекенды, после попытки cancel-нуть сеанс, с детским pg_sleep(1000) в dblink. всегда знал, что гуй в линухах для проформы. из говна и палок Тут дети интересуются что плохого в pg_sleep(100), если он выполняется на сервере из крона? А пг админ это да, жесть. Но тоад еще большее говнище. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 19:03 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсТут дети интересуются что плохого в pg_sleep(100), если он выполняется на сервере из крона? Обычно усилия прикладываются для ускорения выполнения скриптов. Если Вы прикладываете усилия по его замедлению, то ой! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 19:05 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqсникерс Код: sql 1. 2. 3. 4. 5.
это всё в одной транзакции ? или вы транзакций не различаете ? Это все в одном блоке EXECUTE через ; каждая команда. Кстати, с высоты ваших знаний, какой изящный вариант дропанья таблица_партиция можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 19:05 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
ursidoсникерсТут дети интересуются что плохого в pg_sleep(100), если он выполняется на сервере из крона? Обычно усилия прикладываются для ускорения выполнения скриптов. Если Вы прикладываете усилия по его замедлению, то ой! там дропается пяток таблиц. А это утверждение разве не верно? А расчитывал на то что select-ы за время паузы завершаться, а новые таблица_родитель уже будут без использования таблица_партиция, которую надо удалить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 19:06 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсТут дети интересуются что плохого в pg_sleep(100), если он выполняется на сервере из крона? если в этот момент одмин переведет часы на час /год назад, вы будете ждать вашего слипа час/год соответственно. даже 5 минут м.б. роскошью. потому как пг_слип написан колхозниками, не знающими о наличии (и доступности) монотонного "внутреннего" времени. и зачем вам ещё один таймер в кроне ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 19:09 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсЭто все в одном блоке EXECUTE через ; каждая команда. ой, держите меня семеро. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2017, 19:11 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqсникерсЭто все в одном блоке EXECUTE через ; каждая команда. ой, держите меня семеро. в общем не работает так, даже когда слип 5 минут Как удалить эти таблицы без дедлока? о_О ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2017, 10:20 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
может как-то можно вычислить коннект, который использует эту таблицу и кильнуть его? Но я не знаю как нужный коннект вычислить ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2017, 10:27 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwq, Дать товарищу дробовик для отстреливания ног или обойдемся без членовредительства? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2017, 10:29 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
ursidoqwwq, Дать товарищу дробовик для отстреливания ног или обойдемся без членовредительства? Не жалко вам свои ноги-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2017, 10:30 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
ursidoqwwq, Дать товарищу дробовик для отстреливания ног или обойдемся без членовредительства?давайте челу явно не хватает рубцов и потерянных конечностей как стимула к размышлению а медитировать над безопасными тестами видимо не полачаецца кстати, баунти, вы следить за pg_stat_activity / pg_lock не пробовали ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2017, 11:47 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
В общем, вопрос актуален ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 11:25 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
делал так: 1) NO INHERIT 2) килл всех сессий которые в pg_lock по удаляеммой таблички 3)дроп. Проработал несколько дней нормально. Потом появился дедлок снова. Затем сделал так: 1) NO INHERIT 2) килл всех сессий которые в pg_lock по удаляеммой таблички 3) пауза 30 сек 4)килл всех сессий которые в pg_lock по удаляеммой таблички 5) дроп все равно дедлок. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 11:28 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсделал так: 1) NO INHERIT 2) килл всех сессий которые в pg_lock по удаляеммой таблички 3)дроп. Проработал несколько дней нормально. Потом появился дедлок снова. Затем сделал так: 1) NO INHERIT 2) килл всех сессий которые в pg_lock по удаляеммой таблички 3) пауза 30 сек 4)килл всех сессий которые в pg_lock по удаляеммой таблички 5) дроп все равно дедлок. begin; set local deadlock_timeout to '1h'; drop ... commit; ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 11:33 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
Maxim Bogukсникерсделал так: 1) NO INHERIT 2) килл всех сессий которые в pg_lock по удаляеммой таблички 3)дроп. Проработал несколько дней нормально. Потом появился дедлок снова. Затем сделал так: 1) NO INHERIT 2) килл всех сессий которые в pg_lock по удаляеммой таблички 3) пауза 30 сек 4)килл всех сессий которые в pg_lock по удаляеммой таблички 5) дроп все равно дедлок. begin; set local deadlock_timeout to '1h'; drop ... commit; ого, круто! т.е. тут deadlock_timeout = 1 час включится только НА ВРЕМЯ ТРАНЗАКЦИИ? и в течении этого часа drop table будет ждать освобождение таблицы от блокировки и пытаться ее удалить? deadlock_timeout в БД останится такимже как был? (1 сек) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 11:42 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерс, Если не вникать в детали - то да. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 11:44 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
Maxim Bogukсникерс, Если не вникать в детали - то да. Спасибо! Просто пытаюсь разобраться и желательно не положить сервер Попробую - отпишусь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 11:46 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
Пока такая ошибка: Код: sql 1. 2. 3.
ищу как обойти. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 12:00 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсЗатем сделал так: 1) NO INHERIT 2) килл всех сессий которые в pg_lock по удаляеммой таблички 3) пауза 30 сек 4)килл всех сессий которые в pg_lock по удаляеммой таблички 5) дроп это посильнее фауста гётте а крестиком не пробовали ? или гладью кстати вы там дампы в то же время не снимаете часом ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 12:17 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
батончик, вы не можете объяснить, какого хера вы внутри транзакции делаете паузы ? чего вы хотите ими добиться ? добро бы вы рулили через паузы другими сеансами дблинк-а -- это было бы понятно. хотя там проще выставить сеансу дблинка statement_timout , а не рулить асинхронщиной в цыкле ожыдания. покажите содержимое стат-активити и локов на момент вислого дропа, можно не все, а имеющее отношение к проблеме. м.б. что-то станет ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 12:30 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
Так работает: Код: sql 1. 2. 3. 4.
А внутри процедуры не работает: Код: sql 1. 2. 3.
Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 13:47 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqвы не можете объяснить, какого хера вы внутри транзакции делаете паузы ? А вдруг кто-то недобитый останется ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 13:49 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwq,а вы с какого города? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 13:57 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсqwwqвы не можете объяснить, какого хера вы внутри транзакции делаете паузы ? А вдруг кто-то недобитый останется ?а вдруг кто-то новый поднимется ? или старый переподнимется ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 13:57 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqсникерспропущено... А вдруг кто-то недобитый останется ?а вдруг кто-то новый поднимется ? или старый переподнимется да! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 13:57 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерс, Вам английским языком написано: ERROR: cannot begin/end transactions in PL/pgSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 13:58 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
ursidoсникерс, Вам английским языком написано: ERROR: cannot begin/end transactions in PL/pgSQL Как же ее впихнуть в процедуру? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 13:59 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
ursido, чел не понимает, что BEGIN; в SQL (SQL.BEGIN) и BEGIN в plpgSQL (plpgSQL.BEGIN) разные слова разных языков, и означают разное. это в поцгрессе сплошь и рядом например END; EXECUTE; и т.п. -- сыршенно разные слова. вплоть до SELECT .... INTO . Из за чего требуется отдельная альтернатива --"CREATE table .... as select ...." ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 14:05 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсqwwqпропущено... а вдруг кто-то новый поднимется ? или старый переподнимется да!так зачем же ждать этих новых ? может быть наоборот поторопицца, пока не набегло ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 14:07 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqursido, чел не понимает, что BEGIN; в SQL (SQL.BEGIN) и BEGIN в plpgSQL (plpgSQL.BEGIN) разные слова разных языков, и означают разное. это в поцгрессе сплошь и рядом например END; EXECUTE; и т.п. -- сыршенно разные слова. вплоть до SELECT .... INTO . Из за чего требуется отдельная альтернатива --"CREATE table .... as select ...." а как в PL/pgSQL это впихнуть? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 14:29 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 14:36 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqсникерс, rtfm https://www.postgresql.org/docs/current/static/plpgsql.html какая глава-то хоть? о_О ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 14:45 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерс, Боитесь лишнего что-то прочитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 16:04 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
qwwqсникерспропущено... да!так зачем же ждать этих новых ? может быть наоборот поторопицца, пока не набегло ? они не должны набежать, таблица уже не наследник, селекты её не найдут новые. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2017, 17:21 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
Ivan Durakqwwqпропущено... так зачем же ждать этих новых ? может быть наоборот поторопицца, пока не набегло ? они не должны набежать, таблица уже не наследник, селекты её не найдут новые. 1. смотря как написаны. можно расписать запросы в хранимках и напрямую к партициям 2. автовакуумы таки найдут. а они быстро переподимаются при отстреле 3. ну и инсерты с апдейтами могут найти -- если влезут в партицирующие условия (триггерам инхеритс похер, они по имени ищут партиции обычно) но самое забавное -- захера человек в транзакции делает паузу ? он действительно дятил, или просто ваш родственник ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2017, 17:44 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
надо банальный LOCK TABLE ... ACCESS EXCLUSIVE он сам подождет пока не освободится таблица ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2017, 18:14 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
Я тут подумал... а почему собственно дедлок-то возникает? почему delete table просто не дождется пока селект закончится? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2017, 10:42 |
|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#18+
сникерсЯ тут подумал... а почему собственно дедлок-то возникает? почему delete table просто не дождется пока селект закончится? потому что drop table в случае партиционированной таблицы требует 2 лока: 1)на саму удаляемую таблицу а потом 2)на таблицу-предок (или основную) А select берет локи на теже вещи в другом порядке 1)сначала на таблицу предок а потом уже 2)на таблицы потомки. Ждать бессмысленно в такой ситуации. Это именно deadlock когда ни тот ни другой запрос не могут отработать и один из 2х надо снимать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2017, 13:40 |
|
|
start [/forum/topic.php?all=1&fid=53&tid=1996390]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
others: | 313ms |
total: | 480ms |
0 / 0 |