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

Всем привет, подскажите пожалуйста, правильно ли я понимаю Когда у нас

транзакция с isolation level = REPEATABLE READ, то блокировка на чтение держится всю транзакцию
То есть, если я начинаю транзакцию, вызываю select, а потом update (на ту же строку), то в теории должна произойти ошибка (т.к. update не может получить лок из-за уже существующей блокировки на чтение)?

17 ответов

8 просмотров

Какая СУБД?

B450- Автор вопроса
Yaroslav Schekin
Какая СУБД?

я слышал, что это зависит от СУБД, но настолько? конкретно в моем примере это MySQL (InnoDB)

B450
я слышал, что это зависит от СУБД, но настолько? к...

Да, настолько. К примеру, PostgreSQL (да и любой чистый "версионник") на чтение не блокирует ничего и никогда, например. :) А про MySQL не знаю... были какие-то чаты именно по нему — может, стоит поискать / спросить и там тоже?

Если в общем, то неправильно. Если по MySQL - тоже.

B450- Автор вопроса
Ilya Zviagin
Если в общем, то неправильно. Если по MySQL - тоже...

почему, если не секрет, в общем неправильно?

А в конце ты вообще бред написал. Как это не получит, если это одна и та же транзакция?

B450
почему, если не секрет, в общем неправильно?

В общем механизмы обеспечения ACID транзакций и isolation у всех СУБД разные

B450- Автор вопроса
Ilya Zviagin
А в конце ты вообще бред написал. Как это не получ...

то есть одна и та же транзакция внутри себя может менять уровень блокировки?

Ilya Zviagin
В innodb ровно такой же mvcc, как в PG

Хмм... мне почему-то казалось, что они там что-то дополнительно блокируют на RR. Вот, собственно: REPEATABLE READ This is the default isolation level for InnoDB. Consistent reads within the same transaction read the snapshot established by the first read. This means that if you issue several plain (nonlocking) SELECT statements within the same transaction, these SELECT statements are consistent also with respect to each other. See Section 15.7.2.3, “Consistent Nonlocking Reads”. For locking reads (SELECT with FOR UPDATE or FOR SHARE), UPDATE, and DELETE statements, locking depends on whether the statement uses a unique index with a unique search condition, or a range-type search condition. For a unique index with a unique search condition, InnoDB locks only the index record found, not the gap before it. For other search conditions, InnoDB locks the index range scanned, using gap locks or next-key locks to block insertions by other sessions into the gaps covered by the range. Последнего пункта на RR в PostgreSQL просто нет, например.

B450
почему, если не секрет, в общем неправильно?

Вон как выше Ярослав написал, некоторые вообще ничего при чтении не блокируют

B450
то есть одна и та же транзакция внутри себя может ...

Транзакции сами себя не блокируют, кажется, нигде (это было бы глупо, нет?).

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

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

@y0zhig @shizzard А можно я опишу цель и может вообще ерланг мне не подходит. На текущий момент как я понимаю у ерланга есть легковесные потоки и задача выполняется в каком т...
Дмитрий Спиридонов
5
Нужен пулл реквест с хаммингберд + асинкхттпклиент или хаммингберд + юрлсессия?
Karl {🌪️}{🐊} Shinobi
7
Всем привет. Подскажите, почему не меняется значение поля при переключении сайта?
Alexander Peterikov
11
Отдельные отрезки задачи.... Этот момент я пока не понимаю, но пропустим. А что касается ноды... Вот выключилось питание у сервера а он там по tcp куда то сообщение уже отправ...
Дмитрий Спиридонов
1
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
Приветствую друзья, подскажите сколько в среднем стоит на данный момент создать тг бота который будет как магазин? Показывать ассортименты доставлять заказы и тд? Все по станд...
Eugene
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
А вот из практических задач на работе, кто работает расскажите относительно задач на работе, как вообще выживаете. Если есть желание, интересно тоже что и как сейчас с этим . ...
...
2
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Карта сайта