Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
12.12.2018, 16:59
|
|||
---|---|---|---|
|
|||
побороть дедлок |
|||
#18+
Привет, Есть довольно длинный запрос. Он дропает констрэйнты и удаляет строки, все это в одной таблице. Во время его выполнения возникает дедлок. Подскажите, как можно заблокировать таблицу, оставив ей доступ только для чтения для других сессий? Чтобы запрос без помех сделал свое дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.12.2018, 17:07
|
|||
---|---|---|---|
|
|||
побороть дедлок |
|||
#18+
УткъПривет, Есть довольно длинный запрос. Он дропает констрэйнты и удаляет строки, все это в одной таблице. Во время его выполнения возникает дедлок. Подскажите, как можно заблокировать таблицу, оставив ей доступ только для чтения для других сессий? Чтобы запрос без помех сделал свое дело. begin; set local deadlock_timeout to '1h'; все ващи запрос; commit; И будет вам щастие. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.12.2018, 17:12
|
|||
---|---|---|---|
|
|||
побороть дедлок |
|||
#18+
Maxim BogukУткъПривет, Есть довольно длинный запрос. Он дропает констрэйнты и удаляет строки, все это в одной таблице. Во время его выполнения возникает дедлок. Подскажите, как можно заблокировать таблицу, оставив ей доступ только для чтения для других сессий? Чтобы запрос без помех сделал свое дело. begin; set local deadlock_timeout to '1h'; все ващи запрос; Интересный, вариант, благодарю! И все же, можно ли напрямую на таблицу блокировку наложить чтобы ее другие не могли поменять? Или это не имеет смысла от дедлока? commit; И будет вам щастие. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.12.2018, 17:13
|
|||
---|---|---|---|
|
|||
побороть дедлок |
|||
#18+
Maxim Boguk, Интересный, вариант, благодарю! И все же, можно ли напрямую на таблицу блокировку наложить чтобы ее другие не могли поменять? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.12.2018, 17:42
|
|||
---|---|---|---|
|
|||
побороть дедлок |
|||
#18+
УткъMaxim Boguk, Интересный, вариант, благодарю! И все же, можно ли напрямую на таблицу блокировку наложить чтобы ее другие не могли поменять? Читайте доку про уровни блокировок. https://www.postgresql.org/docs/11/explicit-locking.html#LOCKING-TABLES -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.12.2018, 14:33
|
|||
---|---|---|---|
|
|||
побороть дедлок |
|||
#18+
Maxim Boguk, А можно пояснение как это работает? Ведь если дедлок на самом деле есть увеличение deadlock_timeout просто отложит его выявление(разрешится за это время он же никак не может). А увеличение времени deadlock_timeout позволит избежать лишний раз дорогостоящей проверки, если там просто длинные блокировки, а не дедлок. И если Уткъ говорит именно о дедлоках, то эта опция не должна помочь. Что я понимаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.12.2018, 14:47
|
|||
---|---|---|---|
побороть дедлок |
|||
#18+
SerGrr1898, на дедлоки проверяет каждый backend сам себя, когда не может дождаться требуемую блокировку по истечении deadlock_timeout. Соответственно, если у одного deadlock_timeout = 1h, а у другого процесса deadlock_timeout = 1s, то первый спокойно спит и ждёт когда ему дадут блокировку, а второй просыпается и отстреливает сам себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.12.2018, 15:11
|
|||
---|---|---|---|
|
|||
побороть дедлок |
|||
#18+
Melkij, Да, про бэкенды понимаю. Таким образом мы как бы приоритет выставляем, и гарантируем, что наша длиная транзакция по-любому не отстрелится? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.12.2018, 15:36
|
|||
---|---|---|---|
побороть дедлок |
|||
#18+
SerGrr1898, да, получается что-то вроде приоритета. Но нет, не гарант. Только очень сильно понижаем вероятность. Гарантированно по дедлоку не может быть снят только startup. (хотя может быть ещё wraparound autovacuum защищён, не хочу в код зарываться сейчас) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=1995435]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 147ms |
0 / 0 |