Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 4 5 6 7 8 [9] 10 11 12 13 .. 15   вперед  Ctrl
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
этта
Guest
kdv
<...>
а ответ на ваш вопрос -
если происходит попытка update, и у обновляемой записи обнаруживается версия, созданная другой активной транзакцией, то или выдается сообщение об обломе (в режиме nowait), или происходит повисание по wait с ожиданием результата завершения (commit/rollback) транзакции, которая успела обновить запись первой.

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

ну вот это всё -- про реализацию "блокировки здорового человека" в FB.

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

ну да ладно, с вашей бандой аутистов разговаривать надо на языке конкретной реализации, про абстракцию или, не дай бог, инварианты -- это к "более другим" людям (из писателей доки интербейса).
да и к такому разговору -- про реализацию -- у вас вот только сибиряков, hvlad местами, и ещё какой-то перец из разрабов были готовы. Но и те через слово вставали в позу, лицом к мекке, и начинали правоверные мантры. а уж рядовые пользователи -- так те вполне ожидаемо не поддерживают каких либо интрефейсов к внешнему миру -- ни тебе об общеупотребительных абстракциях, ни о тонкостях реализации
14 май 15, 10:47    [17638290]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54812

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

И такой механизм существует. Сравнивается номер текущей транзакции с номером транзакции,
создавшей версию. Оффигительно сложный такой "механизм": сравнение двух целых чисел на
больше/меньше.

Posted via ActualForum NNTP Server 1.5

14 май 15, 11:19    [17638496]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
kdv
Member

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

то есть, вы не способны прочитать простейшую статью
http://www.ibase.ru/devinfo/mga.htm

в которой все ваши вопросы разжеваны? Надо цитатами оттуда сыпать, или как?
14 май 15, 12:01    [17638782]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
PgSQLAnonymous
Member

Откуда:
Сообщений: 84
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 --- это "их личные половые проблемы".
Может быть, не стоит передёргивать у людей на глазах?
14 май 15, 13:28    [17639370]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
Dimitry Sibiryakov
этта
вас спрашивать ни о чём не имеет смысла

Ну, если мои ответы не укладываются в Ваше видение мира, это, конечно, достойный повод их
игнорировать. Зашоренность нынче в моде.

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

P.S. По сути проблемы. В принципе, версионники могут позволять иметь даже целый лес изменений одной и той же записи в таблице. Только этим редко кто пользуется. Заколебешься бранчи мерджить. :)
14 май 15, 13:49    [17639493]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
Сергей Арсеньев,

Следует читать не строку создала, а версию.
14 май 15, 13:50    [17639503]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54812

PgSQLAnonymous
Далее, "происходит повисание по wait с ожиданием результата"
(ожидание lock-а) называется блокировкой.

Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них, но всё же
спрошу: блокировкой чего именно это называется?

Posted via ActualForum NNTP Server 1.5

14 май 15, 13:59    [17639550]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
Dimitry Sibiryakov,

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

Естественно это отличается от блокировки на изменение текущего состояния строки. Просто версионник по другому текущее состояние строки не изменяет. Или он не версионник.
14 май 15, 14:03    [17639574]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
Сергей Арсеньев,

И к стати там не одна блокировка. Порой версионники блокируют возможность чтения из измененной версии незавершенной транзакции.
Так же в этот момент может появляться блокировка на изменение структуры таблицы.
И куча еще каких.
Трудно себе представить систему с конкурирующими процессами без блокировок (не путать с ожиданиями).
14 май 15, 14:08    [17639601]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30273
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, смысл которого в версионнике не очень понятен.
14 май 15, 14:37    [17639854]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
этта
Guest
kdv
<>
то есть, вы не способны прочитать простейшую статью
http://www.ibase.ru/devinfo/mga.htm

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


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

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

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

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

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

И да, вы правы -- я давно ничего не читаю сплошь. Только по диагоналям и квадратно--гнездовым.
14 май 15, 14:40    [17639884]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
этта
Guest
Dimitry Sibiryakov
PgSQLAnonymous
Далее, "происходит повисание по wait с ожиданием результата"
(ожидание lock-а) называется блокировкой.

Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них, но всё же
спрошу: блокировкой чего именно это называется?

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

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

повторяю, на всякий случай, что блокировка -- это абстракция, а не пудовый замок, учтённый в некоем специально лежащем журнале. журнал и прочее -- моменты реализации. их может и не быть.
14 май 15, 14:46    [17639943]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54812

Сергей Арсеньев
Порой версионники блокируют возможность чтения из измененной версии
незавершенной транзакции.

Ещё раз: что в данном случае для Вас означает "блокируют"? Процесс, пытающийся прочитать
изменённую версию, повиснет на ожидании завершения конкурирующей транзакции? Нет, такого
не случается. Изменённые версии свободно читаются кем угодно. Только в result set они
никогда не попадают.

Posted via ActualForum NNTP Server 1.5

14 май 15, 14:50    [17639972]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
этта
Guest
kdv
<>
если транзакция создала версию (изменила и удалила запись), то никто кроме этой транзакции эту версию видеть не может (и не должен), в принципе, пока транзакция не завершится commit-ом. Этим обеспечивается примитивный уровень изолированности read committed.
<>

ну как же , а движок птицы должен где-то наблюдать наличие блокировки "конфликта"

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


ditry read (опционально доступный по особой просьбе) мог бы привнести некоторые забавные возможности ["сообщения" между конкурентами -- в частности]. Но вот проблем в неокрепшие умы -- гораздо больше. Поэтому его естественно опасаться. А т.к. что-то опасное реализовывать ещё и лениво -- то его и не реализовывают.
14 май 15, 14:54    [17640007]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54812

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

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

Posted via ActualForum NNTP Server 1.5

14 май 15, 14:54    [17640013]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
этта
Guest
Dimitry Sibiryakov
этта
в данном случае теряется возможность работать с записью. т.е. блокируется
запись.

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

или у вас есть способность вывести результат dirty read в [куда ?Ъ] клиенту
тогда это становится интересным.
14 май 15, 15:00    [17640043]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30273
этта
в данном случае теряется возможность работать с записью. т.е. блокируется запись.

читать предыдущую версию записи в версионнике никто не запрещает.

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

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

этта
а движок птицы должен где-то наблюдать наличие блокировки "конфликта"

в смысле "понимать, что версия создана еще активной транзакцией, и другая транзакция обновить эту запись не может" - да. Но видите-ли, до момента конкурирующего update движок никаких "наличий блокировки "конфликта"" не видит, потому что в этот момент никаких конфликтов быть не может.
14 май 15, 15:02    [17640061]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
этта
Guest
этта
Dimitry Sibiryakov
пропущено...

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

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


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



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

-- т.к. это очевидно козлу, а вы им явно не являетесь -- то дима,гоги,я детектед
и вообще, -- ну фуу.
14 май 15, 15:04    [17640072]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30273
этта
ага, движком.
но не клиентом.

вот говорю - прочитайте мою статью. Нет, валяет дурака.

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

какая вам тут радость от того, что все это время движок читает все версии? Иначе и быть не может, на то он и движок, чтобы управлять всем этим.
14 май 15, 15:06    [17640084]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54812

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

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

Ты этта... Определись что ли, блокируется таки запись или версия. Это как бэ не одно и тоже...

Posted via ActualForum NNTP Server 1.5

14 май 15, 15:30    [17640289]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30273
этта
-- идёт спор о неумении пользоваться общеупотребительными абстракциями.

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

Иногда, кстати, отсутствие возможности блокировать запись в версионнике для некоторых прикладных случаев является проблемой. Об этом тоже есть статья
http://www.ibase.ru/devinfo/pslock.htm
14 май 15, 16:06    [17640564]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
PgSQLAnonymous
Member

Откуда:
Сообщений: 84
Dimitry Sibiryakov
PgSQLAnonymous
Далее, "происходит повисание по wait с ожиданием результата"
(ожидание lock-а) называется блокировкой.

Я, конечно, помню, что ты сюда приходишь вопросы задавать, а не отвечать на них,

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

Изменения записи, насколько я вижу.
14 май 15, 17:02    [17641000]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54812

PgSQLAnonymous
Изменения записи, насколько я вижу.

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

Posted via ActualForum NNTP Server 1.5

14 май 15, 17:08    [17641034]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
PgSQLAnonymous
Member

Откуда:
Сообщений: 84
Сергей Арсеньев
P.S. По сути проблемы. В принципе, версионники могут позволять иметь даже целый лес изменений одной и той же записи в таблице. Только этим редко кто пользуется. Заколебешься бранчи мерджить. :)

Да, в принципе можно, только все как-то привыкли к одноверсионной Вселенной. ;)
14 май 15, 17:32    [17641184]     Ответить | Цитировать Сообщить модератору
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
PgSQLAnonymous
Member

Откуда:
Сообщений: 84
Dimitry Sibiryakov
PgSQLAnonymous
Изменения записи, насколько я вижу.

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

Хм, а разве нет (я напомню, мы обсуждаем вариант "происходит повисание по wait с ожиданием результата")?
14 май 15, 17:34    [17641196]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 4 5 6 7 8 [9] 10 11 12 13 .. 15   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить