|
Как удалить таблицу и не стать жертвой взаимоблокировки?
|
|||
---|---|---|---|
#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?fid=53&msg=39479223&tid=1996390]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 153ms |
0 / 0 |