172 похожих чатов

Разве vacuum full не должен тогда с ошибкой отвалиться потому

что не смог эксклюзивно заблокировать таблицу?

9 ответов

9 просмотров

А он смог. Упомянутые долгие транзакции [пока] не связаны с этой таблицей.

Viktor-Grigorev Автор вопроса
Yaroslav Schekin
А он смог. Упомянутые долгие транзакции [пока] не ...

То есть транзакции должны упасть при попытке связаться?

Viktor Grigorev
То есть транзакции должны упасть при попытке связа...

Нет. Они должны прочитать rows, актуальные для их snapshot.

Viktor-Grigorev Автор вопроса
Yaroslav Schekin
Нет. Они должны прочитать rows, актуальные для их ...

это зависит от выбранного уровня изоляции? пытаюсь повторить проблему, в одном соеднии делаю update на тестовой таблице, в другом соединии начинаю транзакцию, в первом делаю vacuum full - таблица урезается несмотря на активную более старую странзакцию

Viktor-Grigorev Автор вопроса
Viktor Grigorev
это зависит от выбранного уровня изоляции? пытаюсь...

неправильно эксперимент делал, более старая транзакция должна удаленные строки живыми видеть (я уже после update но до vacuum запускал), после исправления проблема воспроизвелась

Viktor Grigorev
неправильно эксперимент делал, более старая транза...

Да, всё так. На всякий случай, транзакция в PostgreSQL "на самом деле" начинается (берёт первый snapshot) не с "BEGIN TRANSACTION;", а с первого DML statement в ней (я к тому, что об этом стоит помнить, когда экспериментируете).

Yaroslav Schekin
Да, всё так. На всякий случай, транзакция в Postgr...

Т.е. если между ними есть DDL, он исключается из транзакции? 8-O

Philipp Krylov
Т.е. если между ними есть DDL, он исключается из т...

это только в ORACLE так. в Postgres-е чтобы не накручивать счётчик используются виртуальные номера транзакций до момента, когда транзакция явно что-то меняет и нужен новый номер

Philipp Krylov
Т.е. если между ними есть DDL, он исключается из т...

Я просто имел в виду, что, к примеру: "BEGIN TRANSACTION; SET TRANSACTION READ ONLY;" и т.п. snapshot-а не берут. Viktor Grigorev же с этим экспериментировал, так что я не стал расписывать. Правильнее будет "с первого не-TCL statement".

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта