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

Two-Phase locking используется только для уровня serializable или его используют

и для других уровней? Если для других, то для каких?

17 ответов

13 просмотров

Всегда и для всех. О какой СУБД речь, кстати? ;)

А разве двухфазная блокировка защитит от фантомных данных?)

Nikolay- Автор вопроса
Yaroslav Schekin
Всегда и для всех. О какой СУБД речь, кстати? ;)

А например для Snapshot Isolation ведь не нужна 2PL. В 2pl если взят какой то lock на таблицу , то он ее не отпустит до завершения транзакции. А в SI такого нет. Прочитали данные из таблицы и перешли к другой таблице , например и на table1 уже никакой lock не держим . Выходит ,что 2PL только в serialuzable transaction используется

Nikolay
А например для Snapshot Isolation ведь не нужна 2P...

Ещё раз, о какой СУБД речь, конкретно? > А например для Snapshot Isolation ведь не нужна 2PL. Всё равно нужна — Вы забыли о DDL / schema locks (кажется, никто для этого "чисто" MVCC не использует). > Выходит ,что 2PL только в serialuzable transaction используется Выходит, что Вы непонятно о чём спрашиваете. ;) 2PL — это общий принцип, понимаете? И он (частично) нарушается в некоторых СУБД на некоторых уровнях изоляции.

Yaroslav Schekin
Ещё раз, о какой СУБД речь, конкретно? > А наприм...

Тегну вас еще)) А то Николай не видит)) двухвазная блокировка же не защищает от “фантомного чтения” (phantom reads), которого нет в SERIALIZABLE, значит двухфазная блокировка вполне применяться может для достижения REPEATABLE READ. Или я что-то путаю?

Nikolay- Автор вопроса
Yaroslav Schekin
Ещё раз, о какой СУБД речь, конкретно? > А наприм...

СУБД не важна. В 2PL блокировки все отпускаются только в конце транзакции. А в SI берется shared на таблицу только в момент чтения данных из нее и после сразуже отпускается. вот например, если есть 2 селекта внутри одной транзакции, то если это SI , то сначала взмется shared на одну таблицу. из нее прочитаются данные. блокировка отпустится. Дальше возмется блокировка на 2ю таблицу и считается данные из нее . после этого shared блокировка сразу отпустится. А если это 2PL, то блокировка shared даже на первую таблицу будет держатся, когда из нее уже все прочитали. Согласны?

Adv0cat
Тегну вас еще)) А то Николай не видит)) двухвазная...

Защищает, если блокировать то, что нужно. Да, Вы что-то с чем-то путаете. ;) 2PL — это просто принцип, т.е. в первой фазе блокировки только накладываются, во второй — только отпускаются.

Yaroslav Schekin
Защищает, если блокировать то, что нужно. Да, Вы ч...

Ну да, но вы не можете заблокировать данные, которых еще в этой транзакции не запросили 😅 А значит не защищает))

Nikolay
СУБД не важна. В 2PL блокировки все отпускаются то...

> СУБД не важна. А, т.е. Вы ответа на свой вопрос не знаете, но уже откуда-то знаете, что СУБД не важна? ;) > А в SI берется shared на таблицу только в момент чтения данных из нее и после сразуже отпускается. В PostgreSQL (MVCC), например (раз "СУБД не важна") никакого shared lock на данные не берётся. А вот lock на таблицу сохраняется до конца транзакции. > Согласны? Нет, не согласен. И факты не согласны. Более того, в упомянутом PostgreSQL никаких "обычных" блокировок SERIALIZABLE по сравнению с другими уровнями не добавляет. И, кстати, RR не берёт никаких дополнительных блокировок по сравнению с RC.

Adv0cat
Ну да, но вы не можете заблокировать данные, котор...

Странно, а всех защищает. ;) Откройте любой учебник или документацию любой СУБД-"блокировочника".

Two phase commit может?

Nikolay- Автор вопроса
Ilya Zviagin
Two phase commit может?

2PC - это для респределенных транзакций. ОН скорее для A в ACID, а не для I

Nikolay
2PC - это для респределенных транзакций. ОН скорее...

Илья, наверное, имел в виду — может, Вы вообще не о том спросили (нередко путают, просто потому, что названия похожие). ;)

Nikolay- Автор вопроса
Nikolay
а я то подумал, что Илья напутал )

Я ж просто спросил.. Про это two phase locking вообще очень мало кто знает

Nikolay- Автор вопроса
Ilya Zviagin
Я ж просто спросил.. Про это two phase locking воо...

Надеюсь, что вас не обидел своим предположением. Если что, извините.

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
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
Карта сайта