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

Если в постгресе открыть первую транзакцию с уровнем Serializable и

считать данные, потом с тем же уровнем открыть вторую транзакцию и считать данные с таким же условием, а потом вставить ещё строку попадающую под это условие и закоммитить до первой, пройдёт ли коммит?

10 ответов

24 просмотра

Так проверьте, если вот это https://www.postgresql.org/docs/current/transaction-iso.html как-то непонятно или вы этому как-то не верите.

RAFIZ- Автор вопроса
Ilya Anfimov
Так проверьте, если вот это https://www.postgresql...

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

RAFIZ
чекнуть нет возможности но исходя из того что там...

Если первая не пишэт — то что ей помешает.

RAFIZ
чекнуть нет возможности но исходя из того что там...

Не понятно почему 1ая-тр может не завершиться, если она только читает данные

Ilya Zviagin
Не понятно почему 1ая-тр может не завершиться, есл...

Потому что в некоторых ситуациях (очень редко, впрочем) на serializable PostgreSQL откатывает даже read-only transactions (см. https://wiki.postgresql.org/wiki/SSI#Rollover ).

RAFIZ- Автор вопроса
Ilya Zviagin
Не понятно почему 1ая-тр может не завершиться, есл...

первая пишет последовательность: tx1: select * from sample where a = 1 tx2: select * where a = 1 from sample tx2: insert into sample(a) values(1) tx1: insert into sample(a) values(1)

RAFIZ
первая пишет последовательность: tx1: select * f...

А почему это вдруг должно останавливаться Почему ? В чём конфликт этих транзакций?

RAFIZ
первая пишет последовательность: tx1: select * f...

Если первая пишэт, то тут она уж обязательно должна упасть.

RAFIZ- Автор вопроса
Ilya Zviagin
А почему это вдруг должно останавливаться Почему ?...

спросонья не то спросил 🤦🏽‍♂ вот такая последовательность: tx1: select * from sample where a = 1 tx2: select * from sample where a = 1 tx1: insert into sample(a) values(1) tx2: insert into sample(a) values(1) tx2: commit tx1: select * where a = 1 from sample tx1: commit первая упадёт или вторая?

RAFIZ
спросонья не то спросил 🤦🏽‍♂ вот такая последоват...

А я уж попробовал и хотел ответ писать. ;( И да, Вы бы хоть SQL писали нормальный, ну что это такое: "select * where a = 1 from sample;"? ;)

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

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

Как думаете через какой сервис они верифицируют?
inc.
5
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Карта сайта