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

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

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

17 ответов

13 просмотров

Какая СУБД?

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
то есть одна и та же транзакция внутри себя может ...

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

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
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
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта