|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevДа, в данном случае, оптимистическую блокировку нужно реализовывать на клиенте. Мы можем обсудить данный вопрос в личке? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2013, 04:23 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Сергей АрсеньевMasterZivЭ.. ммм... А если вы всё же РАЗНЫЕ поля данной записи будете менять ? Версии будут разные, получишь ты exception, транзакцию откатишь, и всё зря ? Дано У Иванова есть 100 долларов. 1 транзакция - меняет Иванова на Петрова. 2 - списывает у Петрова 10 долларов. Вопрос - должна ли транзакция молча списывать 10 долларов не у того? Сергей, безусловно, пример с изменением первичного ключа таблицы — самый показательный и часто используемый в бд случай! Но я напомню, что транзакция изменения pk должна работать на уровне изоляции serializable. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2013, 19:44 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
MasterZivтранзакция изменения pk должна работать на уровне изоляции serializable. Собственно, к применению уровня изоляции ниже serializable нет никаких причин кроме кривизны конкретной СУБД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2013, 20:26 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСобственно, к применению уровня изоляции ниже serializable нет никаких причин кроме кривизны конкретной СУБД. и все таки пользователь ФБ это диагноз. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2013, 22:59 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
да серьезный ответ) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 12:27 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
да серьезный ответ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 12:28 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Yo.!Dimitry SibiryakovСобственно, к применению уровня изоляции ниже serializable нет никаких причин кроме кривизны конкретной СУБД. и все таки пользователь ФБ это диагноз. Вообще чисто теоретически он прав. Другой вопрос насколько у ФБ все хорошо в этом плане. Люди начинают юзать READ COMMITED и забивать на целостность, или делать ручные блокировки явно не от хорошей жизни :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 12:58 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Nitro_JunkieДругой вопрос насколько у ФБ все хорошо в этом плане. Лучше чем у остальных, поскольку read committed там появился только после того как на IB наложила лапу Borland, исключительно для совместимости с кривой архитектурой VCL. До этого практически единственным TIL был concurrency, который как раз и соответствует serializable. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 13:10 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovconcurrency, который как раз и соответствует serializableА ты не зарапортовался ??? Repetable read и serializable не перепутал ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 13:13 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovNitro_JunkieДругой вопрос насколько у ФБ все хорошо в этом плане. Лучше чем у остальных, поскольку read committed там появился только после того как на IB наложила лапу Borland, исключительно для совместимости с кривой архитектурой VCL. До этого практически единственным TIL был concurrency, который как раз и соответствует serializable. Ну если мериться concurrency, то тогда рулил бы вообще MSSQL с его READ_COMMITED_SNAPSHOT (так как нет оверхеда на чтение данных на начало транзакции). Другое дело что он update conflict'ы кидать не умеет. Понимаю что в этом случае с точки зрения целостности был бы немного мутант, но с точки зрения баланса concurrency - consistency ИМХО наилучший вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 13:20 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
hvladDimitry Sibiryakovconcurrency, который как раз и соответствует serializableА ты не зарапортовался ??? Repetable read и serializable не перепутал ? Там между ними вроде небольшая разница, не? Второй вроде как дополнительно предикаты умеет блокировать, и то ессно не в общем случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 13:21 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Nitro_Junkiehvladпропущено... А ты не зарапортовался ??? Repetable read и serializable не перепутал ? Там между ними вроде небольшая разница, не? Второй вроде как дополнительно предикаты умеет блокировать, и то ессно не в общем случае. Блокировать в смысле update conflict'ы кидать :) Не в смысле lock'ов как в блокировочнике... Хотя конечно надо еще почитать как у разных СУБД это реализовано. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 13:23 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 13:34 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovhvladА ты не зарапортовался ??? Repetable read и serializable не перепутал ? Нет. Если ораклятая дока в части описания стандартных TIL не врётЯ про оракл ни слова не говорил. И ты тоже. Напомню твои слова целиком: Dimitry SibiryakovЛучше чем у остальных, поскольку read committed там появился только после того как на IB наложила лапу Borland, исключительно для совместимости с кривой архитектурой VCL. До этого практически единственным TIL был concurrency, который как раз и соответствует serializable.Так вот, concurrency в IB\FB никак не serializable. С serializable скорее можно сравнивать consistency, если уж так нужно найти аналог для serializable. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 13:39 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Nitro_JunkieВообще чисто теоретически он прав. Другой вопрос насколько у ФБ все хорошо в этом плане. у ФБ все печально не только в этом плане, но в абсолютно во всех других. Nitro_JunkieНу если мериться concurrency, то тогда рулил бы вообще MSSQL с его READ_COMMITED_SNAPSHOT (так как нет оверхеда на чтение данных на начало транзакции). с чего бы бледной копии на оракловый RC рулить ? на тему версионности оракл за последние 30 лет наделал столько фич, начиная с flashback, что мсскл еще не один десяток лет будет пытаться скопировать ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 13:56 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВо-первых, MS SQL начинался с dirty read, всё остальное ему навешали позже. Отсюда его странности в виде локов. Во-вторых, о каком таком оверхэде ты говоришь? О том что надо определить значение на начало транзакции, по идее для этого нужно больше логов прочитать :) чем если это делать в рамках одного statement'а. Ну локи кстати дают чуть большую целостность. Хотя конечно она не сравнится с оверхедом. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 14:03 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 14:14 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Nitro_JunkieО том что надо определить значение на начало транзакции, по идее для этого нужно больше логов прочитать :) чем если это делать в рамках одного statement'а. Это у тебя сильно странная идея. Новая версия записи либо создана после savepoint, либо нет. Нет никакой разницы если этот savepoint уровня запроса или уровня транзакции. Что ещё больше упрощается если таки принять, что запросы вне транзакции (явной или неявной) не выполняются. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 14:23 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovNitro_JunkieО том что надо определить значение на начало транзакции, по идее для этого нужно больше логов прочитать :) чем если это делать в рамках одного statement'а. Это у тебя сильно странная идея. Новая версия записи либо создана после savepoint, либо нет. Нет никакой разницы если этот savepoint уровня запроса или уровня транзакции. Что ещё больше упрощается если таки принять, что запросы вне транзакции (явной или неявной) не выполняются. Тогда может я не совсем понимаю как реализуется "версионный" механизм. Если в системе регистрируются все savepoint'ы и при изменении записи, субд пробегается по всем savepoint'ам и сохраняет для них старое значение, оверхед будет за счет того, что в единицу времени будет больше "активных" savepoint'ов, которые нужно обновлять. Если СУБД определяет предыдущую версию по логам изменений, то тогда оверхед за счет того, что по большему количеству значений нужно пробежать. Вот никак не могу придумать механизм, чтобы не было оверхеда. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 15:03 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Nitro_JunkieВот никак не могу придумать механизм, чтобы не было оверхеда. http://ibase.ru/devinfo/mga.htm Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 15:56 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Nitro_JunkieВот никак не могу придумать механизм, чтобы не было оверхеда. он не существенен на фоне ожиданий на блокировках и оверхеда юлозаний в огромных списках блокировок (смотри результаты TPC-C). в оракле версии строк хранятся в UNDO, который практически наверняка будет в кеше, т.е. весь оверхед в оракле сведется к нескольким тактам процессора, на сравнение SCN транзакции и блока из кеша. поэтому и оракл ведет версионность на уровне блоков, а не строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 16:07 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Yo.!Nitro_JunkieВот никак не могу придумать механизм, чтобы не было оверхеда. он не существенен на фоне ожиданий на блокировках и оверхеда юлозаний в огромных списках блокировок (смотри результаты TPC-C). в оракле версии строк хранятся в UNDO, который практически наверняка будет в кеше, т.е. весь оверхед в оракле сведется к нескольким тактам процессора, на сравнение SCN транзакции и блока из кеша. поэтому и оракл ведет версионность на уровне блоков, а не строк. а забивать кэш версиями - это не оверхед, нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 16:14 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
авторв оракле версии строк хранятся в UNDO, а Оракл про это знает? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 17:00 |
|
Конфликт записи \ чтения
|
|||
---|---|---|---|
#18+
Ivan Durakа забивать кэш версиями - это не оверхед, нет? что значит забивать ? он в кеш не зависимо от версионности приходит, на диск записать его не зависимо от версионности придется. и уходит он из кеша не зависимо от версионности. ScareCrowавторв оракле версии строк хранятся в UNDO, а Оракл про это знает? да, правильней версии блоков ... но блоки хранят версии строк в том числе. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 18:08 |
|
|
start [/forum/topic.php?fid=35&msg=38498414&tid=1552413]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 242ms |
total: | 392ms |
0 / 0 |