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

Всем привет - ребят не могу воспроизвести ситуацию с LOST

updates ни на каком уровне изоляции в PostgreSQL - скажите получается такую ситуацию нельзя наблюдать для PostgreSQL и именно поэтому в доке ничего про это не сказано?

16 ответов

31 просмотр

Так а с чего ты взял, что LOST UPDATE возможен в PG? Его везде извели уже давно, на сколько я знаю, а был он лишь в InterBase

в PG update должен накладывать блокировку на изменяемые записи, так что lost update не будет возможен.

Boris- Автор вопроса
Ilya Zviagin
в PG update должен накладывать блокировку на измен...

ок понял спасибо, странно что в доке упомянут только dirty read как тот феномен который не воспроизводится ни на каком уровне изоляции

Какой именно тип lost updates? Если то, что описывается в ISO SQL, то там ясно сказано "The four isolation levels guarantee that each SQL-transaction will be executed completely or not at all, and that no updates will be lost." Т.е. любую RDBMS, которая врёт утверждает, что она ACID, и допускает lost update на любом из стандартных уровней изоляции, можете смело выкинуть в окно. :) А под lost update в разных местах понимают следующее: 1. A lost update is considered to have taken place when data that has been updated by one transaction is overwritten by another transaction, BEFORE the first transaction is either committed or rolled back. 2. A lost update is when one transaction (Transaction #1) reads data into its local memory, and then another transaction (Transaction #2) changes this data and commits its change. After this, Transaction #1 updates the same data based on what it read into memory before Transaction #2 was executed. In this case, the update performed by Transaction #2 can be considered a lost update. ISO SQL запрещает именно и только первый.

Boris
ок понял спасибо, странно что в доке упомянут толь...

LOST UPDATE (его феномена) на сколько я помню, нет в ANSI-стандарте, поэтому и нет (видимо) смысла об этом упоминать в документации.

Ilya Zviagin
LOST UPDATE (его феномена) на сколько я помню, нет...

Он там упомянут, и запрещается всегда, независимо от уровня изоляции. Так что про него ничего и не пишут, обычно...

Boris
а 2 запрещен ANSI SQL?

Нет, написал же уже. ;)

Boris
а 2 запрещен ANSI SQL?

Ну, как запрещён? Ты этого можешь добиться. Причём -- в любой СУБД

Boris- Автор вопроса
Ilya Zviagin
Ну, как запрещён? Ты этого можешь добиться. Причём...

да я понял это не нарушение гарантий базы

Boris- Автор вопроса
Ilya Zviagin
Ну, как запрещён? Ты этого можешь добиться. Причём...

однако в случае если поставить REPEATABLE READ - не будет воспроизводиться

Boris- Автор вопроса
Ilya Zviagin
будет

только что тестил - получил ERROR: could not serialize access due to concurrent update как и написано в доке

Boris
только что тестил - получил ERROR: could not seri...

Ну значит pg это вообще явно ловит и не дает

Boris
только что тестил - получил ERROR: could not seri...

Это в PostgreSQL, конкретно. Никто не запрещает другим СУБД вести себя иначе в отношении феноменов, не упомянутых в стандарте. Поэтому, IMNSHO, "заморачиваться" феноменами никакого смыла нет. Я к тому, что Вы либо используете SERIALIZABLE и Вам всё равно (никаких феноменов нет, независимо от реализации, если она корректная), либо Вам нужно знать механизмы реализации изоляции для используемых уровней изоляции в конкретной СУБД для того, чтобы написать надёжный код (и "феномены" Вам не помогут).

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

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

Всем привет! Скажите, никто не пытался уменьшить размер процесса ssl, которые ассоциируется с открытым соединением (не помню точное название этого процесса, но там была какая-...
Алексей
20
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Всем привет. Запускаю snmp_server вызовом snmp:start() и получаю вот это: {bad_return, {{snmp_app,start,[normal,[]]}, {'EXIT', {{badmatch, {error, {{shutdown, {failed_to_sta...
Δημήτηρ
9
Кто хочет поиграться в легкий взлом специально уязвимого приложения? :) Ваше задани - вы студент группы 416 - оценку в 100 баллов и найти 10 флагов (текстовых) формата Step0...
Andrii Kurdiumov
4
Привет Хочу сделать аналог iCloud’а для своих проектов, чтобы пользовательская информация хранилась в облаке, была доступна во всех сервисах, её можно было подсасывать везде)...
Виталий
9
код Event::listen('cms.page.display', function (&$content, $slug, $page, $html) { if (is_object($content)) { dump($content); } else { dump($s...
Point 111
3
После переезда на эликсирные доки я не могу найти в интернете актуальную документацию. Раньше вбивал в гугл erlang man ets и первым результатом была свежая дока. Теперь там ст...
Danil Zagoskin
6
<div class="report-widget"> <h3 style="margin-bottom:10px;"> <?= e(__($this->property('title'))) ?> </h3> <button type="submit" data-request-flash ...
Vladimir 
2
Точно проблема в твиге?
Vladimir 
5
помню, предыдущий ноут (последний с тачбаром (А ПОМНИТЕ?) и эскейпом) высаживался почти в ноль за полдня работы, его проще было держать на проводке всегда. на м1 максе я мог п...
Kirill Titov
2
Карта сайта