powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
25 сообщений из 370, страница 9 из 15
Чем плох блокировочник по сравнению с версионником?
    #38958357
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv<...>
а ответ на ваш вопрос -
если происходит попытка update, и у обновляемой записи обнаруживается версия, созданная другой активной транзакцией, то или выдается сообщение об обломе (в режиме nowait), или происходит повисание по wait с ожиданием результата завершения (commit/rollback) транзакции, которая успела обновить запись первой.

<...> Есть единственный конфликт - конфликт обновления одной и той же записи из двух активных транзакций. Причем, устанавливать какую-то там "блокировку" для этого случая нет необходимости. Новая версия записи, созданная первой транзакцией, и есть этот самый "индикатор блокировки".
ну вот это всё -- про реализацию "блокировки здорового человека" в FB.

немного не подробно -- т.к. нужен механизм отличия "не блокирующих" более старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный снепшот.

ну да ладно, с вашей бандой аутистов разговаривать надо на языке конкретной реализации, про абстракцию или, не дай бог, инварианты -- это к "более другим" людям (из писателей доки интербейса).
да и к такому разговору -- про реализацию -- у вас вот только сибиряков, hvlad местами, и ещё какой-то перец из разрабов были готовы. Но и те через слово вставали в позу, лицом к мекке, и начинали правоверные мантры. а уж рядовые пользователи -- так те вполне ожидаемо не поддерживают каких либо интрефейсов к внешнему миру -- ни тебе об общеупотребительных абстракциях, ни о тонкостях реализации
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958403
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттанемного не подробно -- т.к. нужен механизм отличия "не блокирующих" более
старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный
снепшот.
И такой механизм существует. Сравнивается номер текущей транзакции с номером транзакции,
создавшей версию. Оффигительно сложный такой "механизм": сравнение двух целых чисел на
больше/меньше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958456
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттанемного не подробно -- т.к. нужен механизм отличия "не блокирующих" более старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный снепшот.
то есть, вы не способны прочитать простейшую статью
http://www.ibase.ru/devinfo/mga.htm

в которой все ваши вопросы разжеваны? Надо цитатами оттуда сыпать, или как?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958599
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvэттанемного не подробно -- т.к. нужен механизм отличия "не блокирующих" более старых (чем старт транзакции) версий, от "блокирующих" -- более свежих, чем транзакционный снепшот.
то есть, вы не способны прочитать простейшую статью
http://www.ibase.ru/devinfo/mga.htm

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

Например: "lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy."

Так вот, механизм, который "если происходит попытка update, и у обновляемой записи обнаруживается версия, созданная другой активной транзакцией, то..." по этому определению является lock-ом, потому что он "enforcing limits on access to a resource" и "designed to enforce a mutual exclusion concurrency control policy". Кстати, семафор --- это вид lock-а. Далее, "происходит повисание по wait с ожиданием результата" (ожидание lock-а) называется блокировкой .

Поэтому как это там называют разработчики InterBase --- это "их личные половые проблемы".
Может быть, не стоит передёргивать у людей на глазах?
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958630
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovэттавас спрашивать ни о чём не имеет смысла
Ну, если мои ответы не укладываются в Ваше видение мира, это, конечно, достойный повод их
игнорировать. Зашоренность нынче в моде.

Просто Вы говорите на разных языках.
Он вас спрашивает про механизм запрета второй транзакцией создавать новую версию строки, если первая такую строку создала и не завершилась.
Вы говорите - у нас такого механизма нет, мы пользуемся семафорами.

P.S. По сути проблемы. В принципе, версионники могут позволять иметь даже целый лес изменений одной и той же записи в таблице. Только этим редко кто пользуется. Заколебешься бранчи мерджить. :)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958633
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

Следует читать не строку создала , а версию .
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958653
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousДалее, "происходит повисание по wait с ожиданием результата"
(ожидание lock-а) называется блокировкой.
Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них, но всё же
спрошу: блокировкой чего именно это называется?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958665
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Блокировкой операции по созданию новой версии строки.
В общем случае в пределах бранча (в нотаци того же Oracle - workspace если я не путаю).

Естественно это отличается от блокировки на изменение текущего состояния строки. Просто версионник по другому текущее состояние строки не изменяет. Или он не версионник.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958676
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

И к стати там не одна блокировка. Порой версионники блокируют возможность чтения из измененной версии незавершенной транзакции.
Так же в этот момент может появляться блокировка на изменение структуры таблицы.
И куча еще каких.
Трудно себе представить систему с конкурирующими процессами без блокировок (не путать с ожиданиями).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958724
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousУ меня ощущение что InterBase пытается продемонстрировать какие-то преимущества путем переопределения терминов.

Например: "lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy."

во-первых, я бы не советовал увлекаться упомянутой статьей Билла Тодда, потому что там много всякой херни понаписано для тех, кто кроме блокировочников ничего не знает. И терминология там как раз для них. В том числе там в основном про "блокировки" идет информация про транзакции consistency, которые являются специфическими для ИБ-ФБ, и там уже действительно есть блокировки на таблицы целиком по чтению или записи (без версий).

Версия записи, создаваемая update или delete, не является "блокировкой", она является версией. Если никто эту запись обновлять больше не будет, то при commit эта созданная версия просто "превратится" в актуальную версию для всех остальных транзакций.
Эффект "блокировки" конкурирующего update - это ПРАВИЛО, по которому одна запись не может быть обновлена одновременно из двух конкурирующих транзакций.

В общем, как хотите.

Сергей АрсеньевПорой версионники блокируют возможность чтения из измененной версии незавершенной транзакции.
если транзакция создала версию (изменила и удалила запись), то никто кроме этой транзакции эту версию видеть не может (и не должен), в принципе, пока транзакция не завершится commit-ом. Этим обеспечивается примитивный уровень изолированности read committed.
Если версионник не блокирует чтение non-committed версии, то ... мы получаем уровень изолированности dirty read, смысл которого в версионнике не очень понятен.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958729
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv<>
то есть, вы не способны прочитать простейшую статью
http://www.ibase.ru/devinfo/mga.htm

в которой все ваши вопросы разжеваны? Надо цитатами оттуда сыпать, или как?

Я уже писал когда-то , что как только мне войдёт в голову воспользоваться жаренным или его соплеменниками -- я перестану задавать глупые вопросы там, где можно кратенько rtfm.

[и начну во множестве иных случаев]

но вот пока найдена только одна причина думать в эту сторону (и очень много -- против).

т.ч. ничего, если я знающих людей поспрашиваю ?

Пусть даже иноязычных.

И да, вы правы -- я давно ничего не читаю сплошь. Только по диагоналям и квадратно--гнездовым.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958737
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousДалее, "происходит повисание по wait с ожиданием результата"
(ожидание lock-а) называется блокировкой.
Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них, но всё же
спрошу: блокировкой чего именно это называется?

если мы теряем возможность работать с неким ресурсом, как с незатронутым -- то блокировкой этого ресурса.

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

повторяю, на всякий случай, что блокировка -- это абстракция, а не пудовый замок, учтённый в некоем специально лежащем журнале. журнал и прочее -- моменты реализации. их может и не быть.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958744
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевПорой версионники блокируют возможность чтения из измененной версии
незавершенной транзакции.
Ещё раз: что в данном случае для Вас означает "блокируют"? Процесс, пытающийся прочитать
изменённую версию, повиснет на ожидании завершения конкурирующей транзакции? Нет, такого
не случается. Изменённые версии свободно читаются кем угодно. Только в result set они
никогда не попадают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958752
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv<>
если транзакция создала версию (изменила и удалила запись), то никто кроме этой транзакции эту версию видеть не может (и не должен), в принципе, пока транзакция не завершится commit-ом. Этим обеспечивается примитивный уровень изолированности read committed.
<>
ну как же , а движок птицы должен где-то наблюдать наличие блокировки "конфликта"

т.е. как минимум он (движок) -- видеть должен.


ditry read (опционально доступный по особой просьбе) мог бы привнести некоторые забавные возможности ["сообщения" между конкурентами -- в частности]. Но вот проблем в неокрепшие умы -- гораздо больше. Поэтому его естественно опасаться. А т.к. что-то опасное реализовывать ещё и лениво -- то его и не реализовывают.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958756
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттав данном случае теряется возможность работать с записью. т.е. блокируется
запись.
Не теряется. Запись по-прежнему можно свободно читать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958767
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovэттав данном случае теряется возможность работать с записью. т.е. блокируется
запись.
Не теряется. Запись по-прежнему можно свободно читать.
ага, движком.
но не клиентом.

или у вас есть способность вывести результат dirty read в [куда ?Ъ] клиенту
тогда это становится интересным.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958776
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттав данном случае теряется возможность работать с записью. т.е. блокируется запись.
читать предыдущую версию записи в версионнике никто не запрещает.

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

эттаа движок птицы должен где-то наблюдать наличие блокировки "конфликта"
в смысле "понимать, что версия создана еще активной транзакцией, и другая транзакция обновить эту запись не может" - да. Но видите-ли, до момента конкурирующего update движок никаких "наличий блокировки "конфликта"" не видит, потому что в этот момент никаких конфликтов быть не может.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958782
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эттаDimitry Sibiryakovпропущено...

Не теряется. Запись по-прежнему можно свободно читать.
ага, движком.
но не клиентом.

или у вас есть способность вывести результат dirty read в [куда ?Ъ] клиенту
тогда это становится интересным.

-- ах, да , я-то про версию -- читать



то что можно читать старую версию -- это естественно (её ж никто не лочил в версионнике)
то что нельзя писать в запись -- это потеря возможности работы с ресурсом
-- и именно это и есть блокировка записи (на запись, но не на чтение)

-- т.к. это очевидно козлу, а вы им явно не являетесь -- то дима,гоги,я детектед
и вообще, -- ну фуу.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958787
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаага, движком.
но не клиентом.
вот говорю - прочитайте мою статью. Нет, валяет дурака.

- транзакция 10 создает запись, делает commit
- транзакция 20 читает версию, созданную транзакцией 10.
- транзакция 30 обновляет запись, пока не завершается
- транзакция 20 продолжает спокойно читать версию, созданную транзакцией 10.
- транзакция 30 делает commit
- если транзакция 20 - snapshot, то она продолжает читать версию, созданную транзакцией 10.
- если транзакция 20 - read committed, то она читает версию, созданную транзакцией 30.

какая вам тут радость от того, что все это время движок читает все версии? Иначе и быть не может, на то он и движок, чтобы управлять всем этим.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958837
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттав данном случае теряется возможность работать с записью. т.е. блокируется
запись.
этта-- ах, да , я-то про версию -- читать
то что можно читать старую версию -- это естественно (её ж никто не лочил в
версионнике)
Ты этта... Определись что ли, блокируется таки запись или версия. Это как бэ не одно и тоже...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958894
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта-- идёт спор о неумении пользоваться общеупотребительными абстракциями.
на уровне видимости записей и уровней изолированности у версионника нет тех абстракций, которые есть у блокировочника (и наоборот). Поэтому применение этих самых абстракций не к месту вызывает впечатление, что человек чего-то не понимает.
update в версионнике как "блокировка" воспринимается только при конкурентном update. Вы, конечно, можете считать что "создание новой версии является накладыванием блокировки", это ваше право, особенно если вам так проще воспринимать внутренности версионника.

Иногда, кстати, отсутствие возможности блокировать запись в версионнике для некоторых прикладных случаев является проблемой. Об этом тоже есть статья
http://www.ibase.ru/devinfo/pslock.htm
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958967
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousДалее, "происходит повисание по wait с ожиданием результата"
(ожидание lock-а) называется блокировкой.
Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них,

Кот бы говорил. ;)
Dimitry Sibiryakovно всё же спрошу: блокировкой чего именно это называется?

Изменения записи, насколько я вижу.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38958980
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousИзменения записи, насколько я вижу.
То есть, ты утверждаешь, что второй/третий/четвёртый писатель будут ждать события
освобождения записи. Так?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959026
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Арсеньев P.S. По сути проблемы. В принципе, версионники могут позволять иметь даже целый лес изменений одной и той же записи в таблице. Только этим редко кто пользуется. Заколебешься бранчи мерджить. :)
Да, в принципе можно, только все как-то привыкли к одноверсионной Вселенной. ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38959029
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPgSQLAnonymousИзменения записи, насколько я вижу.
То есть, ты утверждаешь, что второй/третий/четвёртый писатель будут ждать события
освобождения записи. Так?

Хм, а разве нет (я напомню, мы обсуждаем вариант "происходит повисание по wait с ожиданием результата")?
...
Рейтинг: 0 / 0
25 сообщений из 370, страница 9 из 15
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]