Re[9]: 2 Alex
От: Alex.Che  
Дата: 22.12.05 09:05
Оценка:
Привет, Merle!
Вы пишешь 22 декабря 2005:

AC>> Смотрим сюда.

AC>> Tr1.Start(read_committed, rec_version, nowait)
AC>> Tr2.Start(read_committed, rec_version, nowait)
AC>> Tr1.UpdateSomeRecord
AC>> Tr2.UpdateSomeRecord ==> Lock conflictk on nowait transaction

M> Что в этот момент делает TR2?


НИКУА НЕ ДЕЛАЕТ.
Я как юзер получаю сообщение о конфликте блокировок.
И ВСЁ.
Дальше мне решать, что делать.
А не провайдеру тупорылому.

AC>> Tr1.Commit

AC>> Tr2.UpdateSomeRecord
AC>> Tr2.Commit
AC>> Где откат?

M> Что — нету? Лень искать, но в этом же форуме мне годя два назад доказывали

M> с пеной у рта, что откат-таки будет.

Мне, как юзеру/программеру решать, откатывать ли транзакцию,
либо коммитить, либо попытаться снова.
Это MS вас подсадил на т.н. "автоматическое управление транзакциями".
И вы свято уверены, что по другому и быть не может.

AC>> И поясни убогому про "вплоть до юзера"...


M> Вплоть до юзера это значит что на уровне провайдера происходит exception...


Всё. Дальше не продолжай.
Разговор глухого со слепым...
Смешались в кучу кони, люди... (С)
И сервер со средствами доступа.

Дальнейшую дискуссию считаю нецелесообразной.
Аминь.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 2.0
Re[10]: 2 Alex
От: Merle Австрия http://rsdn.ru
Дата: 22.12.05 09:25
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>Я как юзер получаю сообщение о конфликте блокировок.

AC>И ВСЁ.
AC>Дальше мне решать, что делать.
AC>А не провайдеру тупорылому.
Отлично, и возвращаясь к основному предмету спора, ты правда считаешь, что это будет быстрее, чем если сервер разрулит это автоматически?

AC>Мне, как юзеру/программеру решать, откатывать ли транзакцию,

AC>либо коммитить, либо попытаться снова.
Даже при Snapshot? В этом случае ты не сможешь гарантировать отсутствие конфликтов и, собственно snapshot-ность, если сможешь серверу явно указать перезапись чужой версии.

AC>Это MS вас подсадил на т.н. "автоматическое управление транзакциями".

Да нет, как раз наоборот. Это IB взвалил решение об откате на разработчика, а все приличные сервера такой фигней не страдают.

AC>И вы свято уверены, что по другому и быть не может.

Почему, можт, только смысла не имеет.

AC>Дальнейшую дискуссию считаю нецелесообразной.

Еще бы, аргументов-то нет.. )
... << RSDN@Home 1.2.0 alpha rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re[13]: SQL 2005 стал быстрее с версионностью?
От: vgrigor  
Дата: 22.12.05 14:35
Оценка:
M>Речь идет о проблемах такого уровня сложности, что бытовой здравый смысл уже не работает.

Допустим, это похоже на правду.

Однако то что микрософт его реализовало говорит о том что они сделали это не для смеха,

или для смеха?

M>Не существует (насколько мне известно) оснований полагать, что версионный подход должен быть более эффективным. Причем не существует ни в теории, ни на практике. Только частные случаи.


M>Очень близкие результаты получаются в реальной жизни.



И никто не проверял что сделано это только для юмора или дает резултаты?
Винтовку добудешь в бою!
Re[10]: 2 Alex
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 22.12.05 16:18
Оценка:
Здравствуйте, Alex.Che, Вы писали:

M>> Что в этот момент делает TR2?


AC>НИКУА НЕ ДЕЛАЕТ.

AC>Я как юзер получаю сообщение о конфликте блокировок.
AC>И ВСЁ.
AC>Дальше мне решать, что делать.
AC>А не провайдеру тупорылому.

Это ты о ком, то есть кому?

Я перед законом чист — ничего такого, за что порвут как грелку, не решаю

AC>Всё. Дальше не продолжай.

AC>Разговор глухого со слепым...
AC>Смешались в кучу кони, люди... (С)

Там еще и Дом Обломова был

AC>Дальнейшую дискуссию считаю нецелесообразной.

Все равно: Firebird — чемпион
AC>Аминь.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[11]: 2 Alex
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 22.12.05 16:29
Оценка:
Здравствуйте, Merle, Вы писали:

AC>>Это MS вас подсадил на т.н. "автоматическое управление транзакциями".


M>Да нет, как раз наоборот. Это IB взвалил решение об откате на разработчика, а все приличные сервера такой фигней не страдают.




Я одно понять не могу — как мы бедные до сих пор не померли от такой ответственности — явно вызывать start/commit/rollback транзакций.

И как человек, который, если честно, совершенно не рубается в нюансах версионника, могу сказать что для таких как я, только такие вместе с SNAPSHOT по умолчанию и нужны.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[9]: 2 Alex
От: dimitr Россия  
Дата: 23.12.05 13:11
Оценка:
Merle,

AC>> Tr1.Commit

AC>> Tr2.UpdateSomeRecord
AC>> Tr2.Commit
AC>> Где откат?
>
M> Что — нету? Лень искать, но в этом же форуме мне годя
M> два назад доказывали с пеной у рта, что откат-таки будет.

Автоматического отката транзакции не будет никогда. Если кто-то писал обратное — это на его совести. При неразрешенном конфликте всегда будет только откат оператора. Ты про это?

M> Тот же Oracle в такой ситуации,

M> производит откат запроса, а затем выполняет запрос повторно,
M> внутри себя, клиент об этой механике даже не догадывается, но
M> тем не менее это полноценный откат.

Он перевыполняет только конкретную операцию записи (вместе с проверкой предиката) или весь запрос? А в режиме NO WAIT (или какой там у него аналог) он как поступает?

M> теоретически при RC на конфликт версий можно просто забить

M> и писать поверх, что делает MSSQL и, в некоторых ситуациях Oracle
M> (насчет IB/FB вопрос все еще туманный)

В IB/FB перезапись может быть, а может и нет (т.е. откат) — зависит от вида RC транзакции. Кстати, насколько перезапись теоретически правильна для RC — я четкого ответа найти не смог. IMHO, тут все от реализации зависит.
Re[9]: SQL 2005 стал быстрее с версионностью?
От: Аноним  
Дата: 23.12.05 13:21
Оценка:
Здравствуйте, Merle, Вы писали:

M>Здравствуйте, Alex.Che, Вы писали:


AC>>О каком многолетнем опыте версионного режима MSSQL-2005 речь?

M>Причем здесь SQL 2005? Я имел ввиду версионный механизм вообще, безотносительно конкретной реализации.

"вообще" иметь в виду версионный механизм странно, потому что он уже есть в
1. InterBase/Firebird, первая коммерческая реализация
2. Oracle, в том или ином виде
3. PostgreSQL (с 1995 года)
4. MS SQL 2005

и планируется (или уже есть) в MySQL.

M>Что касается SQL 2005, то в голой теории это довольно удачная реализация, а о серьезной практике говорить пока рано.


пока будем считать, что это копия с Interbase, а уж удачная или нет — посмотрим.
Re[7]: SQL 2005 стал быстрее с версионностью?
От: Аноним  
Дата: 23.12.05 13:28
Оценка:
Здравствуйте, Merle, Вы писали:

M>Здравствуйте, vgrigor, Вы писали:


V>>поясните нам почему блокировка — лучше отсутсвия блокировки?

M>а стоимость разруливания конфликта для версионного механизма намного выше чем для блокировочного, так как конфликт версий фактически означает откат транзакции.

брр... а мы то живем, и не знаем. Почему же интересно, стоимость "выше"?

И вообще, по треду дальше идут непонятные намеки на откат при конфликте на уровне snapshot,
при том что снапшотов (таких) в MS SQL еще никто не ел. Давайте уж более близкое сравнивать —
в RC никаких "откатов" не надо.
И явное управление завершением транзакции при конфликтах — это благо, а не недостаток.
Собственно, невозможность старта параллельных транзакций в одном коннекте в MS SQL —
это наследованная проблема, которую, думаю, уже не исправить. Отсюда и вольное
обращение со всякими commit/rollback в триггерах, в "провайдерах" и т.п.

В целом я так понял, что автор поста не любит версионность, и считает что Microsoft
совершенно зря (сдуру?) ввел ее поддержку в MS SQL 2005. Иже с ними все упомянутые
мной в другом посте сервера, поддерживающие версионность.
Re[10]: SQL 2005 стал быстрее с версионностью?
От: Кузьменко Д.В. www.ibase.ru
Дата: 23.12.05 13:30
Оценка:
Здравствуйте, Аноним, Вы писали:

вот черт, я не "Аноним", я kdv, www.ibase.ru.
Re[11]: 2 Alex
От: dimitr Россия  
Дата: 23.12.05 13:46
Оценка:
Merle,

M> ты правда считаешь, что это будет быстрее,

M> чем если сервер разрулит это автоматически?

Быстрее не будет, естественно. Весь вопрос — должен ли уровень изоляции RC диктовать отсутствие конфликтов или нет. Если да, то перевыполнение оператора сервером допустимо и, более того, желательно. А вот если нет, то по-хорошему надо спросить юзверя. Вдруг его логика вместо тупого повтора захочет пойти в обход?

M> Даже при Snapshot? В этом случае ты не сможешь гарантировать

M> отсутствие конфликтов и, собственно snapshot-ность, если
M> сможешь серверу явно указать перезапись чужой версии.

Перезапуск оператора после конфликта в снапшоте бесполезен. Авторестарт транзакции — некорректен. Остается выбор: роллбачить автоматом или клиент пусть сам это делает. Дело вкуса, IMHO. Хотя, если держать в памяти гипотетическую вероятность альтернативного пути со стороны клиента, то лучше обойтись без автомата.
Re[8]: SQL 2005 стал быстрее с версионностью?
От: Merle Австрия http://rsdn.ru
Дата: 23.12.05 14:35
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>брр... а мы то живем, и не знаем. Почему же интересно, стоимость "выше"?

Потому что стоимость отката очень высока.

А> Давайте уж более близкое сравнивать — в RC никаких "откатов" не надо.

Формально не надо, на практике Oracle, как правило, откатывает, IB/FB спрашивает клиентский код, что по скорости еще хуже.

А>И явное управление завершением транзакции при конфликтах — это благо, а не недостаток.

Недостаток. Не хочу сейчас ввязываться в дискуссии относительно такого поведения вообще, однако в данном топике идет разговор именно об OLTP задачах, а в таких условиях это недостаток, хотя бы из соображений производительности.

А>Собственно, невозможность старта параллельных транзакций в одном коннекте в MS SQL -это наследованная проблема, которую, думаю, уже не исправить.

Во-первых — это не проблема, во-вторых ее уже исправили (ключевые слова ADO.Net 2.0, MARS, Async Query), а в третих это-то уж здесь совершенно непричем.

А>Отсюда и вольное обращение со всякими commit/rollback в триггерах, в "провайдерах" и т.п.

Еще раз. Взвалить решение о коммите на клиентский код, который ничего не знает о внутреннем состоянии шедулера и о том чем занимаются конкурентные транзакции в этот момент, додумался только IB, ни одна другая СУБД подобными вещами не занимается.

А>В целом я так понял, что автор поста не любит версионность, и считает что Microsoft

А>совершенно зря (сдуру?) ввел ее поддержку в MS SQL 2005. Иже с ними все упомянутые
А>мной в другом посте сервера, поддерживающие версионность.
В целом жестоко ошибаешься. Ты упустил один очень важный момент — в данной подветке речь идет исключительно об OLTP системах. В целом же я очень приветствую шаг MS в эту сторону и моё скромное мнение заключается в том, что в РСУБД будущее не за версионниками или блокировочниками, а за гибридными системами, когда в зависимости от задачи можно выбирать наиболее удобный способ разруливания параллельных транзакций. Однако, если вернуться к теме данной подветки, то OLTP это как раз тот класс задач, когда выгоднее использовать блокировочный режим.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re[12]: 2 Alex
От: Merle Австрия http://rsdn.ru
Дата: 23.12.05 14:35
Оценка:
Здравствуйте, dimitr, Вы писали:

D>Быстрее не будет, естественно.

Об этом и речь. У нас на повестке дня OLTP системы, и здесь очень критично время одной транзакции.

D>Весь вопрос — должен ли уровень изоляции RC диктовать отсутствие конфликтов или нет.

Я описался, речь не о конфликтах а об аномалиях, конечно же. Ну да не важно...
Формально при RC можно забить и перезаписать, на практике Oracle запрос перевыполняет (хотя там более сложная механика, но это лирика), IB вообще пользователя спрашивает.
А на данный момент нас интересует именно вопрос производительности, и по производительности оба эти подхода сливают со свистом простому ожиданию на блокировке. Именно об этом и идет речь в данной подветке.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re[10]: 2 Alex
От: Merle Австрия http://rsdn.ru
Дата: 23.12.05 14:35
Оценка:
Здравствуйте, dimitr, Вы писали:

D> При неразрешенном конфликте всегда будет только откат оператора. Ты про это?

Возможно, дело давнее, но сути это не меняет...

D>Он перевыполняет только конкретную операцию записи (вместе с проверкой предиката) или весь запрос?

Запрос, не транзакцию целиком, а конкретный запрос в этой транзакции.

D> А в режиме NO WAIT (или какой там у него аналог) он как поступает?

Откат запрса и исключение, если он на блокировку нарвался. Если же блокировки нет, а данные успели поменять, то опять-таки, откат запроса и выполнение его по новой.
Но здесь я могу наврать, давно в руках не держал.

D> Кстати, насколько перезапись теоретически правильна для RC — я четкого ответа найти не смог.

Теориетически при RC перезаписать можно совершенно спокойно, формально никаких противоречий нет.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re[10]: SQL 2005 стал быстрее с версионностью?
От: Merle Австрия http://rsdn.ru
Дата: 23.12.05 14:35
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>"вообще" иметь в виду версионный механизм странно,

Ничего странного, поскольку рассматривалась не конкретная реализация, а общие теоретические принципы.

А>пока будем считать, что это копия с Interbase, а уж удачная или нет — посмотрим.

Общего с IB там только версионность на уровне записи, а не страницы, как в Oracle или Postgree...
... << RSDN@Home 1.2.0 alpha rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re[9]: SQL 2005 стал быстрее с версионностью?
От: Аноним  
Дата: 23.12.05 15:17
Оценка:
Здравствуйте, Merle, Вы писали:

M>Здравствуйте, <Аноним>, Вы писали:


А>>брр... а мы то живем, и не знаем. Почему же интересно, стоимость "выше"?

M>Потому что стоимость отката очень высока.

Гм. Есть методика измерения и\или конкретные цифры ?

А>> Давайте уж более близкое сравнивать — в RC никаких "откатов" не надо.

M>Формально не надо, на практике Oracle, как правило, откатывает, IB/FB спрашивает клиентский код, что по скорости еще хуже.

Оператор откатывается автоматически. А тр-ция тут причём ??? Ах да, стиль программирования, прививаемый MSSQL'ом, не рекомендует явного управления тр-циями и мало кто из T-SQL кодеров пользуется запрещённым оператором "BEGIN TRAN". Отсюда и знак равенства между откатом оператора и тр-ции

...

А>>Собственно, невозможность старта параллельных транзакций в одном коннекте в MS SQL -это наследованная проблема, которую, думаю, уже не исправить.

M>Во-первых — это не проблема, во-вторых ее уже исправили (ключевые слова ADO.Net 2.0, MARS, Async Query), а в третих это-то уж здесь совершенно непричем.

И шо 2 тр-ции будут жить в одном коннекте ?

А>>Отсюда и вольное обращение со всякими commit/rollback в триггерах, в "провайдерах" и т.п.

M>Еще раз. Взвалить решение о коммите на клиентский код, который ничего не знает о внутреннем состоянии шедулера и о том чем занимаются конкурентные транзакции в этот момент, додумался только IB, ни одна другая СУБД подобными вещами не занимается.

Давно я так не смеялся Только клиентский код знает о том, как ему нужно обрабатывать ошибку — откатом, повтором, другим оператором или ещё как. К счастью о "внутреннем состоянии шедулера" для этого знать не надо
Ни одна СУБД не занимается такой порнографией, как невозможность перехватить и обработать ошибку (некоторые их виды). В Юконе может и натанет "щастье", но не скоро он заменит предыдущие версии... так что жрать кактусы ещё долго нужно будет... Это об откатах и их обработке в одном продвинутом блокировочнике

Хорсун Влад
Re[9]: SQL 2005 стал быстрее с версионностью?
От: Кузьменко Д.В. www.ibase.ru
Дата: 23.12.05 15:53
Оценка:
Здравствуйте, Merle, Вы писали:

А>>брр... а мы то живем, и не знаем. Почему же интересно, стоимость "выше"?

M>Потому что стоимость отката очень высока.

опять мы про "откат", который требуется только для snapshot, и который
имеет мало смысла в том же самом OLTP.

А>>И явное управление завершением транзакции при конфликтах — это благо, а не недостаток.

M>Недостаток. Не хочу сейчас ввязываться в дискуссии относительно такого поведения вообще, однако в данном топике идет разговор именно об OLTP задачах, а в таких условиях это недостаток, хотя бы из соображений производительности.

чистых OLTP уже давно нет. Обязательно на десять OLTP-пользователей найдется пара-тройка отчетников или аналитиков.

А>>Отсюда и вольное обращение со всякими commit/rollback в триггерах, в "провайдерах" и т.п.

M>Еще раз. Взвалить решение о коммите на клиентский код, который ничего не знает о внутреннем состоянии шедулера и о том чем занимаются конкурентные транзакции в этот момент, додумался только IB, ни одна другая СУБД подобными вещами не занимается.

моя твоя не понимай, и так же с другой стороны. Мне непонятно, как вообще сервер может чего-то там решать
за меня.

M>Однако, если вернуться к теме данной подветки, то OLTP это как раз тот класс задач, когда выгоднее использовать блокировочный режим.


в чистом виде — да. Но — например, зачем Borland ввел понятие Cached Updates, когда на клиенте сначала оформляется
пакет изменений, а потом выстреливается? Короткая транзакция, да, но чем дольше момент от начала изменений на клиенте до старта транзакции на сервере, тем меньше шансов успешно обновить данные. Проблемы "кэширования" никто не отменял, и здесь ни версионник, ни блокировочник не имеют разницы в плане "устаревания" данных.
Re[13]: 2 Alex
От: dimitr Россия  
Дата: 23.12.05 16:04
Оценка:
Merle,

M> А на данный момент нас интересует именно вопрос производительности,

M> и по производительности оба эти подхода сливают со свистом простому
M> ожиданию на блокировке. Именно об этом и идет речь в данной подветке.

В IB/FB стартуешь транзакцию READ_COMMITTED NO_REC_VERSION WAIT и он работает как блокировочник, т.е. при обнаружении нами активной чужой версии записи ждем завершения (любого) транзакции-конкурента на ее (записи) чтении, а не на апдейте. После чего успешно читаем результат и перезаписываем его своим. Для версионника это не совсем ожидаемый режим и он редко кем используется, однако он существует и при желании может быть применен в OLTP.
Re[11]: SQL 2005 стал быстрее с версионностью?
От: dimitr Россия  
Дата: 23.12.05 16:09
Оценка:
Merle,

M> Общего с IB там только версионность на уровне записи,

M> а не страницы, как в Oracle или Postgree...

Насколько я в курсе, страничная версионность есть только в Oracle. Как PGSQL, так и InnoDB в MySQL реализуют версионность записей. Ноги у которой растут от RDB/ELN и InterBase, и на сей день вырасли аж до MSSQL. И это "только" диктует очень много схожих технических решений для всех упомянутых СУБД.
Re[12]: SQL 2005 стал быстрее с версионностью?
От: Merle Австрия http://rsdn.ru
Дата: 24.12.05 00:46
Оценка:
Здравствуйте, dimitr, Вы писали:

D> Ноги у которой растут от RDB/ELN и InterBase, и на сей день вырасли аж до MSSQL. И это "только" диктует очень много схожих технических решений для всех упомянутых СУБД.

InnoDB, вообще отдельная пестня — дитя финского энтузиаста, да и строить общность только на том, что механизм работает на одинаковом уровне — занятие неблагодарное. В отличии от всех остальных версионников, сиквел еще и обеспечивает полноценный блокировочный механизм, так что вряд ли тут можно рассуждать о копировании идей.
Вообще же, корни растут из работ по MV over 2PL, того же Бернстайна, Грея, Беренсона, ect, которые в 70х-80х двигали теорию CC, а нонче работают на MS.
... [RSDN@Home 1.2.0 alpha rev. 619]
Мы уже победили, просто это еще не так заметно...
Re[14]: 2 Alex
От: Merle Австрия http://rsdn.ru
Дата: 24.12.05 00:46
Оценка:
Здравствуйте, dimitr, Вы писали:

D> Для версионника это не совсем ожидаемый режим и он редко кем используется, однако он существует и при желании может быть применен в OLTP.

Отлично. Теперь читаем еще раз внимательно о чем речь. Не о том, что IB плох, а о том какой механизм выгоднее использовать в определенной ситуации.
Да, в данной ситуации выгоднее использовать блокировочный, если IB это умеет — молодец, но речь здесь не об этом.
... [RSDN@Home 1.2.0 alpha rev. 619]
Мы уже победили, просто это еще не так заметно...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.