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

Обьясните, как работает 2х фазный коммит? Все равно ведь нельзя

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

17 ответов

28 просмотров

Какое отношение имеет видимость к атомарности?

2фазный комит к видимости никак не относится (он её не меняет)

Nikolay- Автор вопроса
Yaroslav Schekin
Какое отношение имеет видимость к атомарности?

хороший вопрос. с одной стороны можно смотреть на атомарность, как гарантию того, что применится все или ничего. и в таком понимании 2PC согласуется с этим. Но вот в той же вики в теме про Атормарность ест и такие слова " As a consequence, the transaction cannot be observed to be in progress by another database client" . А в случает 2PC выходит, что я могу это увидеть. в одной системе я увижу данные уже закомиченными, а в другой еще не. Т.е я увижу как раз тот самый progress транзакции . https://en.wikipedia.org/wiki/Atomicity_(database_systems)

Nikolay- Автор вопроса
Ilya Zviagin
2фазный комит к видимости никак не относится (он е...

почему? если у меня 2 системы. Допустим, что в одной системе, я записываю 1 insert, а в другой другой инсерт. всего у меня 2 Insert. Т.е должен я увидеть сразу 2 строки. А так получается, что я могу их проверить и увижу только 1... а потом через какое-то время увижу уже 2.

Nikolay
почему? если у меня 2 системы. Допустим, что в одн...

Ты это про распределённые транзакции, видимо. А сначала ты про 2PC спрашивал.

Nikolay
хороший вопрос. с одной стороны можно смотреть на ...

> А в случает 2PC выходит, что я могу это увидеть. Не выходит. "Половину" транзакции Вы не увидите. > в одной системе я увижу данные уже закомиченными, а в другой еще не. Да, и это нормально. > Т.е я увижу как раз тот самый progress транзакции . Нет. Никакой "распределённой ACID транзакции" в 2PC нет, он именно и только про атомарность.

Nikolay- Автор вопроса
Ilya Zviagin
Ты это про распределённые транзакции, видимо. А сн...

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

Nikolay
почему? если у меня 2 системы. Допустим, что в одн...

Это какой-то непонятный пример. В 2PC транзакция с одного узла распространяется на другие. Т.е. у неё нет независимых частей в разных системах.

Nikolay- Автор вопроса
Yaroslav Schekin
> А в случает 2PC выходит, что я могу это увидеть....

т.е нет как бы нет одной транзакции? это у меня 2 разные транзакции. выходит, что так?

Nikolay
commit двух вазный, он же как часть транзакции. во...

> вот я как бы подразумеваю Не подразумевайте, протоколы и алгоритмы дают только формально заявленные гарантии, кофе не варят. ;) > все свойства транзакций соблюдаться при таком коммите Опять-таки, никакой распределённой транзакции тут нет.

Nikolay
т.е нет как бы нет одной транзакции? это у меня 2 ...

Я не знаю, как выходит в неясном примере. Нужно конкретные приводить в таких случаях — подобные темы и так достаточно сложны.

Nikolay- Автор вопроса
Yaroslav Schekin
> вот я как бы подразумеваю Не подразумевайте, пр...

а можно ли тогда сделать распределенную транзакцию т.е транзакцию( когда несколько хостов, как в примере с этими 2мя инсертами). там ведь встанет этот же вопрос.

Yaroslav Schekin
> вот я как бы подразумеваю Не подразумевайте, пр...

Все это ближе к репликации с гарантией доставки, чем к транзакции как таковой

Nikolay
а можно ли тогда сделать распределенную транзакцию...

Да, но для этого используются уже распределённые СУБД, т.е. одного только протокола atomic commit для этого недостаточно.

Nikolay
а можно ли тогда сделать распределенную транзакцию...

Ты когда делаешь распред. транзакцию, она выполня... яется на нескольких базах данных. А ты смотришь всегда только на одну БД. Видимость оцениваешь в одной. Если будешь смотреть на несколько, то да, у тебя строк от двух INSERT в двух разных БД будет одновременно либо видно, либо нет (при условии конечно что данные БД поддерживают соотв. уровень изоляции, чтобы их было именно не видно)

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

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

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
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
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
У меня задача: написать брокер сообщений. Очереди и потребители. Очереди поддерживают приоритеты. Очередь отдает сообщения, только обработчикам с соответствующими характеристи...
Aleksandr Filippov
2
Карта сайта