powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как удалить таблицу и не стать жертвой взаимоблокировки?
25 сообщений из 59, страница 2 из 3
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39469016
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сникерсТут дети интересуются что плохого в pg_sleep(100), если он выполняется на сервере из крона?
если в этот момент одмин переведет часы на час /год назад, вы будете ждать вашего слипа час/год соответственно. даже 5 минут м.б. роскошью.

потому как пг_слип написан колхозниками, не знающими о наличии (и доступности) монотонного "внутреннего" времени. и зачем вам ещё один таймер в кроне ?
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39469018
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сникерсЭто все в одном блоке EXECUTE через ; каждая команда.

ой, держите меня семеро.
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39469199
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqсникерсЭто все в одном блоке EXECUTE через ; каждая команда.

ой, держите меня семеро.
в общем не работает так, даже когда слип 5 минут


Как удалить эти таблицы без дедлока? о_О
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39469204
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может как-то можно вычислить коннект, который использует эту таблицу и кильнуть его?

Но я не знаю как нужный коннект вычислить
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39469206
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq,

Дать товарищу дробовик для отстреливания ног или обойдемся без членовредительства?
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39469208
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursidoqwwq,

Дать товарищу дробовик для отстреливания ног или обойдемся без членовредительства?

Не жалко вам свои ноги-то?
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39469304
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursidoqwwq,

Дать товарищу дробовик для отстреливания ног или обойдемся без членовредительства?давайте

челу явно не хватает рубцов и потерянных конечностей
как стимула к размышлению
а медитировать над безопасными тестами видимо не полачаецца

кстати, баунти, вы следить за pg_stat_activity / pg_lock не пробовали ?
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477573
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, вопрос актуален
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477578
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делал так:



1) NO INHERIT
2) килл всех сессий которые в pg_lock по удаляеммой таблички
3)дроп.


Проработал несколько дней нормально.


Потом появился дедлок снова.



Затем сделал так:
1) NO INHERIT
2) килл всех сессий которые в pg_lock по удаляеммой таблички
3) пауза 30 сек
4)килл всех сессий которые в pg_lock по удаляеммой таблички
5) дроп


все равно дедлок.
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477583
Фотография 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;
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477590
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 сек)
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477594
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сникерс,

Если не вникать в детали - то да.
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477595
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Bogukсникерс,

Если не вникать в детали - то да.


Спасибо!

Просто пытаюсь разобраться и желательно не положить сервер


Попробую - отпишусь.
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477606
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока такая ошибка:

Код: sql
1.
2.
3.
ERROR: cannot begin/end transactions in PL/pgSQL
SQL-состояние: 0A000
Подсказка: Use a BEGIN block with an EXCEPTION clause instead.




ищу как обойти.
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477618
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сникерсЗатем сделал так:
1) NO INHERIT
2) килл всех сессий которые в pg_lock по удаляеммой таблички
3) пауза 30 сек
4)килл всех сессий которые в pg_lock по удаляеммой таблички
5) дроп

это посильнее фауста гётте

а крестиком не пробовали ?
или гладью

кстати вы там дампы в то же время не снимаете часом
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477627
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
батончик,

вы не можете объяснить, какого хера вы внутри транзакции делаете паузы ? чего вы хотите ими добиться ? добро бы вы рулили через паузы другими сеансами дблинк-а -- это было бы понятно. хотя там проще выставить сеансу дблинка statement_timout , а не рулить асинхронщиной в цыкле ожыдания.


покажите содержимое стат-активити и локов на момент вислого дропа, можно не все, а имеющее отношение к проблеме. м.б. что-то станет ясно.
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477677
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так работает:

Код: sql
1.
2.
3.
4.
begin;
set local deadlock_timeout to '1h';
DROP table my_table;
commit;



А внутри процедуры не работает:


Код: sql
1.
2.
3.
EXECUTE 'begin;set local deadlock_timeout to ''1h'';'||'DROP TABLE ' ||  quote_ident(tablename)|| ';commit;';
ERROR:  cannot begin/end transactions in PL/pgSQL
HINT:  Use a BEGIN block with an EXCEPTION clause instead.




Почему?
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477679
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqвы не можете объяснить, какого хера вы внутри транзакции делаете паузы ?


А вдруг кто-то недобитый останется ?
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477690
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,а вы с какого города?
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477691
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сникерсqwwqвы не можете объяснить, какого хера вы внутри транзакции делаете паузы ?


А вдруг кто-то недобитый останется ?а вдруг кто-то новый поднимется ?

или старый переподнимется
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477692
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqсникерспропущено...



А вдруг кто-то недобитый останется ?а вдруг кто-то новый поднимется ?

или старый переподнимется

да!
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477693
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сникерс,

Вам английским языком написано:

ERROR: cannot begin/end transactions in PL/pgSQL
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477696
сникерс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursidoсникерс,

Вам английским языком написано:

ERROR: cannot begin/end transactions in PL/pgSQL


Как же ее впихнуть в процедуру?
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477703
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursido,

чел не понимает, что BEGIN; в SQL (SQL.BEGIN) и BEGIN в plpgSQL (plpgSQL.BEGIN) разные слова разных языков, и означают разное.

это в поцгрессе сплошь и рядом
например
END;
EXECUTE;
и т.п. -- сыршенно разные слова.

вплоть до SELECT .... INTO . Из за чего требуется отдельная альтернатива --"CREATE table .... as select ...."
...
Рейтинг: 0 / 0
Как удалить таблицу и не стать жертвой взаимоблокировки?
    #39477708
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сникерсqwwqпропущено...
а вдруг кто-то новый поднимется ?

или старый переподнимется

да!так зачем же ждать этих новых ?

может быть наоборот поторопицца, пока не набегло ?
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 2 из 3
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как удалить таблицу и не стать жертвой взаимоблокировки?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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