powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Конфликт записи \ чтения
25 сообщений из 101, страница 4 из 5
Конфликт записи \ чтения
    #38496379
Михаил Еськов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevДа, в данном случае, оптимистическую блокировку нужно реализовывать на клиенте.

Мы можем обсудить данный вопрос в личке?
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38497656
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевMasterZivЭ.. ммм... А если вы всё же РАЗНЫЕ поля данной записи будете менять ?
Версии будут разные, получишь ты exception, транзакцию откатишь, и всё зря ?

Дано У Иванова есть 100 долларов.

1 транзакция - меняет Иванова на Петрова.
2 - списывает у Петрова 10 долларов.

Вопрос - должна ли транзакция молча списывать 10 долларов не у того?


Сергей, безусловно, пример с изменением первичного ключа таблицы — самый показательный и часто используемый в бд случай!

Но я напомню, что транзакция изменения pk должна работать на уровне изоляции serializable.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38497696
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivтранзакция изменения pk должна работать на уровне изоляции serializable.

Собственно, к применению уровня изоляции ниже serializable нет никаких причин кроме
кривизны конкретной СУБД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38497758
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovСобственно, к применению уровня изоляции ниже serializable нет никаких причин кроме
кривизны конкретной СУБД.

и все таки пользователь ФБ это диагноз.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498271
Port-Sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да серьезный ответ)
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498273
Port-Sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да серьезный ответ...
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498353
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Dimitry SibiryakovСобственно, к применению уровня изоляции ниже serializable нет никаких причин кроме
кривизны конкретной СУБД.

и все таки пользователь ФБ это диагноз.

Вообще чисто теоретически он прав. Другой вопрос насколько у ФБ все хорошо в этом плане.

Люди начинают юзать READ COMMITED и забивать на целостность, или делать ручные блокировки явно не от хорошей жизни :)
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498384
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieДругой вопрос насколько у ФБ все хорошо в этом плане.
Лучше чем у остальных, поскольку read committed там появился только после того как на IB
наложила лапу Borland, исключительно для совместимости с кривой архитектурой VCL. До этого
практически единственным TIL был concurrency, который как раз и соответствует serializable.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498390
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovconcurrency, который как раз и соответствует serializableА ты не зарапортовался ??? Repetable read и serializable не перепутал ?
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498409
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovNitro_JunkieДругой вопрос насколько у ФБ все хорошо в этом плане.
Лучше чем у остальных, поскольку read committed там появился только после того как на IB
наложила лапу Borland, исключительно для совместимости с кривой архитектурой VCL. До этого
практически единственным TIL был concurrency, который как раз и соответствует serializable.


Ну если мериться concurrency, то тогда рулил бы вообще MSSQL с его READ_COMMITED_SNAPSHOT (так как нет оверхеда на чтение данных на начало транзакции). Другое дело что он update conflict'ы кидать не умеет. Понимаю что в этом случае с точки зрения целостности был бы немного мутант, но с точки зрения баланса concurrency - consistency ИМХО наилучший вариант.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498414
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladDimitry Sibiryakovconcurrency, который как раз и соответствует serializableА ты не зарапортовался ??? Repetable read и serializable не перепутал ?

Там между ними вроде небольшая разница, не? Второй вроде как дополнительно предикаты умеет блокировать, и то ессно не в общем случае.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498418
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkiehvladпропущено...
А ты не зарапортовался ??? Repetable read и serializable не перепутал ?

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

Блокировать в смысле update conflict'ы кидать :) Не в смысле lock'ов как в блокировочнике... Хотя конечно надо еще почитать как у разных СУБД это реализовано.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498458
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА ты не зарапортовался ??? Repetable read и serializable не перепутал ?

Нет. Если ораклятая дока в части описания стандартных TIL не врёт, то repeatable read
описывает поведение двунаправленных курсоров (каковых, сам знаешь, нету) в пределах одного
запроса, а serializable - поведение двух последовательных запусков одного и того же запроса.

Nitro_JunkieНу если мериться concurrency, то тогда рулил бы вообще MSSQL с его
READ_COMMITED_SNAPSHOT (так как нет оверхеда на чтение данных на начало транзакции).
Во-первых, MS SQL начинался с dirty read, всё остальное ему навешали позже. Отсюда его
странности в виде локов.
Во-вторых, о каком таком оверхэде ты говоришь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498476
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladА ты не зарапортовался ??? Repetable read и serializable не перепутал ?

Нет. Если ораклятая дока в части описания стандартных TIL не врётЯ про оракл ни слова не говорил. И ты тоже. Напомню твои слова целиком:
Dimitry SibiryakovЛучше чем у остальных, поскольку read committed там появился только после того как на IB
наложила лапу Borland, исключительно для совместимости с кривой архитектурой VCL. До этого
практически единственным TIL был concurrency, который как раз и соответствует serializable.Так вот, concurrency в IB\FB никак не serializable. С serializable скорее можно сравнивать consistency, если уж так нужно найти аналог для serializable.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498516
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieВообще чисто теоретически он прав. Другой вопрос насколько у ФБ все хорошо в этом плане.

у ФБ все печально не только в этом плане, но в абсолютно во всех других.

Nitro_JunkieНу если мериться concurrency, то тогда рулил бы вообще MSSQL с его READ_COMMITED_SNAPSHOT (так как нет оверхеда на чтение данных на начало транзакции).
с чего бы бледной копии на оракловый RC рулить ? на тему версионности оракл за последние 30 лет наделал столько фич, начиная с flashback, что мсскл еще не один десяток лет будет пытаться скопировать
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498536
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВо-первых, MS SQL начинался с dirty read, всё остальное ему навешали позже. Отсюда его
странности в виде локов.
Во-вторых, о каком таком оверхэде ты говоришь?


О том что надо определить значение на начало транзакции, по идее для этого нужно больше логов прочитать :) чем если это делать в рамках одного statement'а.

Ну локи кстати дают чуть большую целостность. Хотя конечно она не сравнится с оверхедом.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498566
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ про оракл ни слова не говорил. И ты тоже.
Да. Но в его доке есть описание ANSI транзакций. Впрочем, если тебе не нравится ссылка на
его доку, возьмём это: http://www.emanual.ru/download/www.eManual.ru_538.html#tab_1
Все три феномена невозможны уже на уровне concurrency, consistency уже оверкилл и его
можно сравнивать только с Оракуловской реализацией serializable, которая превосходит по
силе стандартную serizalizable тем, что выдаёт ошибки и там, где их не ожидаешь.

Если прочитать описание феномена Phantom, то мы увидим "Если транзакция T1 повторит чтение
с тем же предикатом <search condition>, то получит уже другой набор данных, отличный от
полученного в первый раз", что никак не позволяет согласовать concurrency с repeatable
read, где этот феномен разрешён.
Кроме того, в данном случае (ПМСМ) "повторит чтение" - несколько неудачный перевод,
который лучше заменить на "выполнит запрос заново".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498583
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieО том что надо определить значение на начало транзакции, по идее для
этого нужно больше логов прочитать :) чем если это делать в рамках одного statement'а.
Это у тебя сильно странная идея. Новая версия записи либо создана после savepoint, либо
нет. Нет никакой разницы если этот savepoint уровня запроса или уровня транзакции. Что ещё
больше упрощается если таки принять, что запросы вне транзакции (явной или неявной) не
выполняются.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498645
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovNitro_JunkieО том что надо определить значение на начало транзакции, по идее для
этого нужно больше логов прочитать :) чем если это делать в рамках одного statement'а.
Это у тебя сильно странная идея. Новая версия записи либо создана после savepoint, либо
нет. Нет никакой разницы если этот savepoint уровня запроса или уровня транзакции. Что ещё
больше упрощается если таки принять, что запросы вне транзакции (явной или неявной) не
выполняются.


Тогда может я не совсем понимаю как реализуется "версионный" механизм. Если в системе регистрируются все savepoint'ы и при изменении записи, субд пробегается по всем savepoint'ам и сохраняет для них старое значение, оверхед будет за счет того, что в единицу времени будет больше "активных" savepoint'ов, которые нужно обновлять. Если СУБД определяет предыдущую версию по логам изменений, то тогда оверхед за счет того, что по большему количеству значений нужно пробежать.

Вот никак не могу придумать механизм, чтобы не было оверхеда.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498774
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieВот никак не могу придумать механизм, чтобы не было оверхеда.

http://ibase.ru/devinfo/mga.htm
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498795
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_JunkieВот никак не могу придумать механизм, чтобы не было оверхеда.
он не существенен на фоне ожиданий на блокировках и оверхеда юлозаний в огромных списках блокировок (смотри результаты TPC-C).
в оракле версии строк хранятся в UNDO, который практически наверняка будет в кеше, т.е. весь оверхед в оракле сведется к нескольким тактам процессора, на сравнение SCN транзакции и блока из кеша. поэтому и оракл ведет версионность на уровне блоков, а не строк.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498808
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Nitro_JunkieВот никак не могу придумать механизм, чтобы не было оверхеда.
он не существенен на фоне ожиданий на блокировках и оверхеда юлозаний в огромных списках блокировок (смотри результаты TPC-C).
в оракле версии строк хранятся в UNDO, который практически наверняка будет в кеше, т.е. весь оверхед в оракле сведется к нескольким тактам процессора, на сравнение SCN транзакции и блока из кеша. поэтому и оракл ведет версионность на уровне блоков, а не строк.
а забивать кэш версиями - это не оверхед, нет?
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38498923
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторв оракле версии строк хранятся в UNDO,
а Оракл про это знает?
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38499050
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan Durakа забивать кэш версиями - это не оверхед, нет?
что значит забивать ? он в кеш не зависимо от версионности приходит, на диск записать его не зависимо от версионности придется. и уходит он из кеша не зависимо от версионности.

ScareCrowавторв оракле версии строк хранятся в UNDO,
а Оракл про это знает?
да, правильней версии блоков ... но блоки хранят версии строк в том числе.
...
Рейтинг: 0 / 0
Конфликт записи \ чтения
    #38500229
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторно блоки хранят версии строк в том числе.
а ссылку на доку не дадите?
...
Рейтинг: 0 / 0
25 сообщений из 101, страница 4 из 5
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Конфликт записи \ чтения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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