powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Блокировки MSSQL, Oracle, IB
47 сообщений из 47, показаны все 2 страниц
Блокировки MSSQL, Oracle, IB
    #32154898
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
Тут знакомый грит что у него на мсскл при удалении нескольких записей регулярно блокируется гораздо больше записей. Точно знаю, что оракл блокирует только на уровне записи и по дефолту реадеры не блокируют, неужели у мс другой подход ? А что у ИБ ?
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32154922
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НАсколько знаю, в MSSQL выше 6.5 возможно установить параметр для блокировки отдельной записи.
У IB нет блокировок, версионная структура. При желании, конечно, блокировать можно - установить запрет другим транзакциям на запись в таблицу, но в обычном режиме такого не делается.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32154974
Zaxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Roman Ignatiev

>У IB нет блокировок, версионная структура.

Что совсем нет блокировок ??? Две сессии будут одну запись одновременно редактировать ? Может всё-таки по чтению блокировок нет?
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155004
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совсем нет :-))
Две транзакции как правило спокойно могут изменить одну запись, не говоря уже о чтении. И если одна из них сделает rollback - все будет в порядке,
Разбор начинается при commit...
http://www.ibase.ru/devinfo/ibtrans.htm
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155044
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
У MSSQL как и у его родного брата сайбэйза проблемы с блокировкой на уровне строк пожизни.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155135
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
заглянул на мсдн ... там грится что есть хинт rowlock который в принципе может, но типа по одной блокировать дорого и по дефолту сервер сам решает ! Т.е. майкрософт умный и сам решает и когда захочет может по пол таблицы заблокировать. Так что теперь я должен каждый раз приписывать rowlock ??? и чем мне это грозит на 10 млн записях ?
Да еще забавный пример там был, блокировка по диапозону индекса, типа мне не дадут вставить запись если кто-то в данный момент просматривает (залочел) этот дипазон индекса.
Это я что то недопонял или как раз за это ораклу и платят ?
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155217
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Gt
Вообще-то в хелпе написано так:

The Microsoft® SQL Server™ 2000 dynamic locking strategy automatically chooses the best locking granularity for queries in most cases. In cases where access patterns are well understood and consistent, limiting the locking levels available for an index can be beneficial.

For example, a database application uses a lookup table that is refreshed weekly in a batch process. The most efficient locking strategy is to turn off page and row locking and allow all concurrent readers to get a shared (S) lock on the table, reducing overhead. During the weekly batch update, the update process can take an exclusive (X) lock, and then update the entire table.

The granularity of locking used on an index can be set using the sp_indexoption system stored procedure. To display the current locking option for a given index, use the INDEXPROPERTY function. Page-level locks, row-level locks, or a combination of page-level and row-level locks can be disallowed for a given index.

И чё-то я не понял вашего удивления Так что теперь я должен каждый раз приписывать rowlock ??? и чем мне это грозит на 10 млн записях ?
Вы что пишите select для каждой записи? В любом случае согласитесь, что если Вы собрались делать нечто не совсем стандартным способом, надо как-то это серверу указать.

Да еще забавный пример там был, блокировка по диапозону индекса, типа мне не дадут вставить запись если кто-то в данный момент просматривает (залочел) этот дипазон индекса.
Наверное лучше сказать так: вставка будет произведена после того, как кто-то просмотрит тот диапазон. Не факт что это медленнее, чем создание новой версии диапазона, как это делается в Оракле или Интербейзе.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155254
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
теперь я понимаю почему разные весовые категории ...

Код: plaintext
1.
Вы что пишите select для каждой записи? В любом случае согласитесь, что если Вы собрались делать нечто не совсем стандартным способом, надо как-то это серверу указать. 


допустим мне нужен read commeted уровень (совершено стандартно), т.е. про селекты забыли. апдейчу пару сотен записей - в результате неизвестно сколько у меня заблокируется ... как то не серьезно получается ...

Код: plaintext
1.
Наверное лучше сказать так: вставка будет произведена после того, как кто-то просмотрит тот диапазон. Не факт что это медленнее, чем создание новой версии диапазона, как это делается в Оракле или Интербейзе.


ну во первых вы похоже даже не пытались посмотреть как это сделанно в оракле, но грубить пока не буду :) ... а факты ... ну надеюсь вы не хотите сказать, что оракловая реализация медленее ?
http://www.eweek.com/slideshow/0,3018,sid=0&s=1590&a=23120,00.asp
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155369
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не стал бы утверждать категорично, однако приведенные Вами факты довольно наглядно свидетельствуют, что оракловая реализация медленнее.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155392
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню, что я имею в виду. Представленные Вами результаты обсуждались здесь еще в марте прошлого года. На 1-м и 2-м графиках рассматривается подключение через JDBC. Обращаю Ваше внимание, что в то время родного JDBC-драйвера к SQL Server еще не существовало, поэтому скорее всего в случае SQL Server использовался JDBC-ODBC bridge. Отсюда - вполне логичные потери в производительности. Однако стоит с SQL Server начать работать не через жопу, а по-людски (графики 3, 4 - all MS-software stack), он показывает свои обычные результаты, т.е. легко делает Oracle по throughput (Oracle - 600 Web pages per sec, MS SQL - 800 на 1000 юзерах) и, соответственно, по времени отклика (Oracle > 30 c, MS SQL < 25).
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155411
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
урл ? неверю (С) Станиславский :)

на самом деле мне как-то все равно как в той непонятной апликации они получили такие цифры. речь не о скорости, но если интересно могу накидать еще пару десятков линков различных "независимых" тестирований.

так вот может ли кто сдесь аргументировано опровергнуть:
мсскл получает близкие результаты с ораклом и дб2 за счет того что блокирует не на уровне записей, а на уровне целых страниц и таблиц.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155423
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
... добалю:
а если поставить в равные условия (hint ROWLOCK), то большая вероятность, что мсскл загнется от недостатка памяти.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155469
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы сами себе противоречите. Если бы в условиях 1000 одновременных пользователей менеджер блокировок SQL Server выбирал крупную гранулярность блокировок, то это было бы сразу заметно по возрастанию response time. Кроме того, в декабре мы здесь обсуждали потребные затраты на блокирование ресурса в разных СУБД и пришли к выводу, что в SQL Server они, мягко говоря, не превышают аналогичные показатели в Oracle. Поэтому "загнется от недостатка памяти" - это просто бред какой-то.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155531
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
Не понял про респонс тайм ... если я заблокировал пол таблицы то мне наверно всетаки проще с ней манипулировать, или нет ? ну да ладно речь не о том
урл ! где урл ? в декабре по слову блокировка ничего нет. ну и раз уж пошла такая пьянка тыкните в мсдн, а то я пока увидел 2-3 левых кента, настоятельно не рекомендующих таким заниматся из-за "эскалация блокировок". к стате, чо это такое ?
и еще где параметер который нужно выставить, чтоб каждый раз не писать хинт ?
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155546
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
Ну вот в чем главное различие:

Oracle never escalates locks. Lock escalation greatly increases the likelihood of deadlocks. Imagine the situation where the system is trying to escalate locks on behalf of transaction T1 but cannot because of the locks held by transaction T2. A deadlock is created if transaction T2 also requires lock escalation of the same data before it can proceed.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155579
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Обсуждение приведенных Вами результатов тестов здесь: /topic/5003\r
2. Обсуждение того, где сколько стоит каждая блокировка, здесь:\r
http://www.sql.ru/forum/actualthread.aspx??bid=10&tid=12853 \r
Там же я, кстати, высказывался, почему на мой взгляд, адаптивный подход к масштабу блокирования предпочтительнее тупого блокирования уровня записи. \r
3. Видите ли, response time здесь при том, что если бы SQL Server проврался и стал блокировать постранично, поэкстентно, потаблично, податабейзно там, где в данных конкретных условиях предпочтителен масштаб уровня записи, мы с Вами бы немедленно получили на тысячe конкурентных пользователей жуткий contention с неизбежными lock timeouts, deadlocks и всеми прочими неприятностями, о которых Вы пишете. Что, естественно, немедленно посадило бы response time. А здесь мы наблюдаем очевидное замедление производительности только за счет кривого доступа. Как только берется native API, все сразу встает на свои места. Не знаю, насколько скажется поддержка CLR-типов в Юконе, но я глубоко убежден, что изо всех СУБД на сегодня реляционный движок SQL Server 2000 - самый шустрый.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32155972
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
Что ж вас так задел этот тест ??? я его привел только для того чтоб показать что многие "независимые" считают, что оракл гораздо быстрее, похоже у вас другое мнение ... но как-то я больше доверяю сылкам :)
на шустрости :) так фокс и mysql думаю делают на порядок ... дело не в скоростях а способности решения задач.

Итак скорсть не важна, давай мерять архитектуры, из того треда выяснил, что похоже глвное отличие - мультиверсионность оракла. дальше идет эсколация, мнение оракла на эту тему я привел. а вот что увидел у мс:

Note The SQL Server query optimizer automatically makes the correct determination. It is recommended that table-level locking hints be used to change the default locking behavior only when necessary. Disallowing a locking level can affect concurrency adversely.

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

на счет мультиверсионости: каким образом тогда в мс можно получить какой либо отчет по таблице если в ней работает пара сотен юзеров (апдейтят записи), я так понимаю, что в этом случае ставятся блокировки и считать эти записи совсем нельзя ?
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156095
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
все похоже нашел все различия:
http://dbforums.com/arch/48/2002/5/392828" TARGET="_blank">http://dbforums.com/arch/48/2002/5/392828
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156136
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что это? Очередной вопль фаната Oracle? На сравнение СУБД это совсем не похоже , не говоря уже про достоверность фактов приведенных в постинге.
Я вполне понимаю людей с недоверием относящихся к продуктам от MS, но это не повод разводить бессмысленную демагогию...
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156200
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
незнаю чо это, но по поводу оракле вроде все так и есть. ну а что на счет мсскл ? это правда (я про мультиверсионность и эсколацию) ?

просто стандартная ситуация:
каким образом тогда в мс можно получить какой либо отчет по таблице если в ней работает пара сотен юзеров (апдейтят записи), я так понимаю, что в этом случае ставятся блокировки и считать эти записи совсем нельзя ?
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156201
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>И что это? Очередной вопль фаната Oracle? На сравнение СУБД это совсем не похоже , не говоря уже про достоверность фактов приведенных в постинге.

Прочел статью. Там достаточно много интересных и справедливых мыслей.
Что касается достоверности данных (могу оценить только одну сторону - Оракл) - я не увидел откровенных ляпов и сплошной демагогии. Покажите конкретные выдержки из статьи. Их можно обсудить.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156244
Zaxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Crip

>И что это? Очередной вопль фаната Oracle? На сравнение СУБД это совсем не похоже , не говоря уже про достоверность фактов приведенных в постинге

Очень грамотная и объективная статья. Покажите недостоверные факты в статье?

Возможно там есть лишние эмоции типа "SQL Server is clearly positioned between MS-ACCESS and ORACLE in terms of functionality, performance, and scalability (It makes a work group level solution (small number of users with small amount of data), perhaps at the departmental level." это конечно противоречит мелкософтовкой рекламе, но это учитывая проблемы с блокировками и изоляциями это так и есть.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156307
vov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vov
Гость
Ну а что тут скрывать - есть проблемы с блокировками в MSSQL.
И не от хорошей жизни на многих длинных отчетах ставят хинты NOLOCK (read uncommited). И если бы в MSSQL была версионность, жить было бы легче.

Что есть - то есть

P.S.: Тем не менее мне больше нравится MSSQL - наверно я мазохист...
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156514
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
OK, с блокировками ясно, но тут еще услышал мнение, что у блокировочных и версионных бд свои достоинства и недостатки. траблы с блокировками - ясно, а в чем минус версионных ? жрут память ? скорость ? мсскл щас вроде на tcp.org и в нонкластеред лидирует.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156554
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При одинаковой реализации (предпологая что дураков нет в командах реализующих)теоретически версионки уступают в скорости.
Ну не надо неверсионкам лазить в редологи на селектах. Вопрос открыт при возникших блокировках, имхо тут от реализации задуманного девелопером зависит.
ЗЫ: и скока мона их сравнивать...
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156629
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ну не надо неверсионкам лазить в редологи на селектах

а "версионкам" значит надо?

ЗЫ: и скока мона глупости говорить?
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32156932
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, конечно сегменты отката.
(Концепции. см Глава 10. Одновременный доступ к данным)
http://www.kuzbass.ru/docs/ora-rus-all/rdmbs-scm/7013scm.10
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157036
Zaxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Roman Ignatiev

>У IB нет блокировок, версионная структура.
....
>Две транзакции как правило спокойно могут изменить одну запись, не говоря >уже о чтении. И если одна из них сделает rollback - все будет в порядке,
>Разбор начинается при commit...

Поставил я IB (Firebird) ради проверки и получил нормальный логичный (для меня) результат:
Изменённая запись блокируется. При попытке изменить её другой сессией получаю: "Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. lock conflict on no wait transaction. deadlock."
На чтение второй сессией, естественно, блокировка не влияет (на то она и многоверсионность).
По другому и быть не могло...
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157038
Merle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да что вы все, сговорились что-ли? А некто Action и Gt не одно лицо случаем?

Если по делу. Я так понимаю что к блокировочникам и MSSQL в частности 2 претензии:
1. Эскалация блокировок - suxx
2. А что собственно за минусы есть у версионников?

Отвечаю по порядку:
1 - эскалация вовсе на suxx, если посмотреть по ближе и разобраться что же это такое.
Для начала по поводу хинтов типа ROWLOCK. Ценность применения его сомнительна, потому как по дефолту и так накладывается Row Level Lock, в случае отсутствия благоприятных условий типа идущих подряд на всю страницу записей нуждающихся в блокировке, ясен перец, что Page Level Lock в этом случае рулит. А в случае неожиданной нехватки ресурсов ROWLOCK идет лесом и сервер все равно эскалирует блокировку до нужного уровня, чтобы все-таки обработать запрос, а не вывалиться с сообщением о нехватке ресурсов.
Далее по поводу дедлоков. Эскалация блокировок не может вызвать дедлок сама по себе, сколько бы транзакций не пыталось его провести одновременно на одну и ту же таблицу. По той простой причине, что эапрос на эскалирующую блокировку хитрый, он не ожидает, а сразу возвращает удалась блокировка или нет. Если удалась, то все хорошо, если не удалась - спокойно пыхтим дальше на прежнем уровне.
Эскалация блокировок может лишь спровоцировать дедлок потенциально опасных транзакций, которые без эскалации разошлись бы во времени или по записям, но рано или поздно при увеличении нагрузки дедлок все равно бы случился. Так что это уже ошибки проектирования и неча на сервер пенять, коли руки кривы.
Небольшая ремарка по поводу Оракла. Там эскалация не введена по той причине, что S блокировки и так табличные, меньше они не умеют, отсюда и ресурсов на блокировки в принципе меньше надо, а значит можно на этом с экономить ну и конкурентов блокировочников пнуть почти не по делу.

2. У версионников минусы примерно такие: (себя же цитирую) Например в версионнике очень сложно реализовать "по честному" Serialisable уровень изоляции. "не зная броду" можно очень легко привести базу в неконсистентное состояние. Что для грамтного разработчика конечно же не является проблемой, как в прочем и реализация беспрепятственного чтения в блокировочнике. Но в любом случае приходится идти на некоторые жертвы.
К примеру попытка в Oracle сделать транзакцию Serialisable в некоторых случаях приводит к снижению возможности параллельной обработки транзакций по сравнению с теми же MSSQL и DB2, отсюда и проигрыш в производительности в тяжелых OLTP приложениях с большим количеством R/W запросов.
Это если в краце, с примерами лень расписывать, если кому интересно покопайтесь....
(Ну или на http://www.rsdn.ru в форум с вопросами, я там чаще бываю, сюда по случаю только заглянул)
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157058
Zaxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 SiDen

> При одинаковой реализации (предпологая что дураков нет в командах реализующих)теоретически версионки уступают в скорости.

Это да. А ещё многие СУБД теоретически уступят в скорости досовскому foxpro в локальном однопользовательском режиме. Поскольку последнему вообще не надо заботиться не об уровне изоляции не об транзакциях.
А на практике, как правило, минимальный режим изоляции пригодный для непротиворечивого представления информации и нормальной работы с данными это Read Commited и при многопользовательской работе с множеством чтений/записей в это режиме версионки своё возьмут.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157063
Zaxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Merle

>Небольшая ремарка по поводу Оракла.....S блокировки и так табличные, меньше они не умеют

Меньше и не требуется. В них в Оракле как раз не возникает необходимости. При чтении-то он данных не лочит.

>в версионнике очень сложно реализовать "по честному" Serialisable уровень изоляции.
В чём сложность ? Можно поподробнее?

> "не зная броду" можно очень легко привести базу в неконсистентное состояние.
Пример пожалуйста! Как это сделать в Oracle?

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

Это да. Но для беспрепятственного чтения в блокировочнике жертвовать приходится гораздо большим - использовать Dirty Read. А это как раз приводит базу в "неконсистентное состояние".

>К примеру попытка в Oracle сделать транзакцию Serialisable в некоторых случаях приводит к снижению
> возможности параллельной обработки транзакций по сравнению с теми же MSSQL и DB2

А если в MSSQL и DB2 сделать транзакцию Serialisable это совершенно не приводит к снижению возможности параллельной обработки транзакций ???
В MSSQL даже Read Commited (что для Oracle нормальный режим) приводит к сильному снижению возможности параллельной обработки транзакций.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157127
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Zaxx: точно, а BerkeleyDB вообще рулеззз

ЗЫ: Хватит мерять кита со слоном... у одного уши длиньше, а у другого - хвост...
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157264
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Zaxx
Да, измененная запись блокируется, разумеется. Но все происходит не совсем так, как кажется - все зависит от параметров транзакции. Суда по всему, делал пробу через BDE?
Я еще немного и запутал :-)
Объясню подробнее - допустим, одна транзакция изменяет запись и стоит. Во второй транзакции изменяется эта же запись. Если у нее параметр wait - update будет ждать какое-то время (обычно 10 секунд), что сделает первая транзакция, если rollback - все пройдет нормально, commit или кончилось время - конфликт. Именно об этом я и говорил.
При nowait - вторая транзакция не ждет, выдает сразу.
При этом, если вторая транзакция read committed - она спокойно может повторить попытку после того, как первая завершилась, также все пройдет.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157272
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
Да что вы все, сговорились что-ли? А некто Action и Gt не одно лицо случаем?
угу :) сговорились, правда не совсем одно но практически одно ...


> "не зная броду" можно очень легко привести базу в неконсистентное состояние.
Пример пожалуйста! Как это сделать в Oracle?

да у меня тоже чо то с фантазией туго ... можно пример ?

сейчас облазил ибм у них по этому поводу сказано лишь, что мы круче мсскл т.к. эскалацией можно управлять и дб2 быстрей оракла. оракл естественно грит, что версионник круче т.к. никто никого не ждет, но тактично молчит о скорости. ИМХО аргумент оракла пока красивей - смысл в скорости если база стоит ?
Т.е. клиенты получают отчеты через инет (много клиентов), им естественно нельзя сказать подождите и совсем нельзя давать им мешать операторам ... а как такого добится на дб2 ? надеятся, что клиенты будут успевать проскальзовать между блокировками как-то не серьозно ...

к стате оракл красиво рассматривает архитектурные различия (естественно в свою сторону), а ибм, чо то все на деньги перевела и сравнивает только лицензии и индексы.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157318
Zaxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Roman Ignatiev

>Да, измененная запись блокируется, разумеется.
Вначале вы вроде как говорили обратное
.
>Именно об этом я и говорил.
Вы говорили что: "Две транзакции как правило спокойно могут изменить одну запись.....Разбор начинается при commit...". Это по моему означает что: две сессии меняют одну запись а потом делают коммиты. Если они меняют её по очереди это уже совсем другое.

>Но все происходит не совсем так, как кажется - все зависит от параметров транзакции.
Пробовал в режиме Read Commited и Snapshot.

>Суда по всему, делал пробу через BDE?
Интерестно судя по чему? Нет, это нет так, делал в IBexpert, он работает без BDE.

Объясню подробнее - допустим...
Не надо объяснять. Я был против вашего поста про то что "в IB совсем нет блокировок". И Вы вроде как со мной уже согласились.

>Если у нее параметр wait - update будет ждать какое-то время
Где ставить параметр wait ?

>При этом, если вторая транзакция read committed - она спокойно >может повторить попытку после того, как первая завершилась
Как и в любой СУБД без IB-шной версионности.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157372
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Да, измененная запись блокируется, разумеется.
Вначале вы вроде как говорили обратное.

Говорил, был не прав, каюсь :-) Просто не приходилось сталкиваться с блокировкой на практике.


Вы говорили что: "Две транзакции как правило спокойно могут изменить одну запись.....Разбор начинается при commit...". Это по моему означает что: две сессии меняют одну запись а потом делают коммиты. Если они меняют её по очереди это уже совсем другое.

Неточно выразился, теоретически такое, кстати, возможно, практически - неподтвержденной может быть только одна версия записи. Подразумевалось - при wait идет ожидание, и если одна транзакция делает rollback, выражение второй проходит.

>Но все происходит не совсем так, как кажется - все зависит от параметров транзакции.
Пробовал в режиме Read Commited и Snapshot.
Snapshot уж точно выдаст deadlock - она не видит изменений после своего старта.

>Суда по всему, делал пробу через BDE?
Интерестно судя по чему? Нет, это нет так, делал в IBexpert, он работает без BDE.
У нее nowait по-умолчанию. IBExpert - также nowait, а у ISQL - wait.

Я был против вашего поста про то что "в IB совсем нет блокировок". И Вы вроде как со мной уже согласились.

Согласен. Есть. На конкурентное изменение.

>Если у нее параметр wait - update будет ждать какое-то время
Где ставить параметр wait ?

В IbExpert - Настройки -> свойства среды и там Транзакции. isc_tpb_wait. К базе нужно пересоединиться. Я обычно пользуюсь доступом через IBX для тестов, привычнее.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32157486
IBMer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GT: http://www-3.ibm.com/software/data/pubs/papers/
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32158528
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
http://www-3.ibm.com/software/data/pubs/papers/readconsistency/readconsistency.pdf
^^^
наконец нашел внятный ответ, суть я так понял, медленно из-за лишних действий (что как бы проще посмотреть на tcp.org) и главное что юзер получает старые (неправильные) данные которые кто то уже меняет. однако потом они вспоминают про select for update и грят:

Note that this last example is the default behavior with DB2. That is, a
second transaction will wait for the first transaction to commit before it sees
changed data. That way you get current results not old results. If you do not
want to wait on a lock then there is the other ANSI standard isolation level
called uncommitted read which will see the current value of the data even if
that data is not yet committed.

т.е. юзая select for update я получаю те же уровни изоляции что и в дб2, но медленей (что сказывается на тяжелых OLPT ), а дб2 в свою очередь в ответ мультиверсионости предлагает грязное чтение.

я правильно понял ?
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32164640
IBMer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дорогой друг, Gt. Нет ты до конца не понял. Никого не интересуют как реализован у тебя ACID. Всех интересует сколько транзакций сможет обработать сервер за промежуток времени - это есть критерий выбора системы. А не ЖДЕТ или НЕ ЖДЕТ читатель писателя это уже не столь важно.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32165010
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
мда фокс тогда бы рулил, он знаешь скока могет :) всех интересуют данные, правильные данные, а скорость уже в последнюю очередь (после надежности и возможностей).

элементарно мы даем select и получаем разные ответы ! оракл по дефолту не будет ждать всех комитов, дб2 будет - в результате разные ответы на один запрос, это небходимо учитывать.

и все таки, я так и не понял как поступит дб2: select * на маленькую табличку которую круглосуточно апдейтят, т.е. в любой момент времени данные таблички модифицируются. То что менеждер блокировок там крутой, эт я уже слышал, меня интеречует как ? Стопорнет все апдейты и пропихнет селект ?
И еще, вебная апликуха - тысячи юзеров, все только читают и при этом получается блокируют, дальше кто то открыл карточку (заблокировал пару записей) и уснул ... что будет с вебными юзерами ?
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32171105
IBMer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>элементарно мы даем select и получаем разные ответы ! оракл по дефолту не >будет ждать всех комитов, дб2 будет - в результате разные ответы на один >запрос, это небходимо учитывать.

И оба этих результата не будут верны уже через минуту. Уже будут другие данные и что.

>и все таки, я так и не понял как поступит дб2: select * на маленькую >табличку которую круглосуточно апдейтят, т.е. в любой момент времени >данные таблички модифицируются. То что менеждер блокировок там крутой, >эт я уже слышал, меня интеречует как ? Стопорнет все апдейты и пропихнет >селект ?
Ну и стопорнет. Oracle надо будет страничку новую создать, это тоже время не забывай.

>И еще, вебная апликуха - тысячи юзеров, все только читают и при этом
>получается блокируют, дальше кто то открыл карточку (заблокировал пару
>записей) и уснул ... что будет с вебными юзерами ?

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

А ситуация про Web которую ты описал извини но это кривоватые руки разработчика.
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32173200
Gt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt
Гость
Ну и стопорнет. Oracle надо будет страничку новую создать, это тоже время не забывай.
какую страничку ??? ты имел ввиду сегмент отката, так и дб2 он нужен наверно ...

ОК, с вебной криво, но блин я побозреваю, что такое наследство досталось не только мне ... тогда вот такой пример, как такое надо было правильно делать ? (п.с. пример ораклоида, в дб2 он врядле силен)


ok, say you have a 3 "page" or 3 block table. pretend there is 1 row / block.
assume the values are:

ACCT BALANCE ACCT_TYPE
---- ------- ---------
1 500 savings
2 100 savings
1 1000 checking


Obviously -- there is 1600 in the bank there right? Assume the following
operations and we are using the default DB2 isolation "read committed". What we
need to do is report back "how much money is in the bank". At the same time --
we need to process transactions

time operation by query operation by update
------ ------------------------- -----------------------
t1 start query, read block 1
running total = 500, while
reading -- we have a shared
read lock on the block

t2 account 1 pulls up to ATM
and tries to take 400 from
checking (block 1) but has to
wait -- query has block 1 shared
locked and we need it exclusive

t3 query finished with block 1, released
shared lock, moved onto block 2, running
total = 600

t4 we get exclusive lock on block 1
and change the value to 100.


t5 we are actually doing a transfer,
so now we get block 3 and add
400 to it. block 3 has an
exclusive lock on it.

t6 give up block 2, try to move onto
block 3. we cannot - so we wait...

t7 we commit -- releasing block 3

t8 move onto block 3, read 1400 -- add
to 600 and report back the answer
"there be 2,000 in the bank!", hmmm



There are other interesting scenarios -- say you want a consistent read -- a
correct answer. In db2 -- that is "repeatable read", they achieve that by
LEAVING the shared locks on as they read it. So, it the above timeline, the
query would have blocked the update until the query finished and committed.
Given that block 2 really could represent a TON of blocks in the example, that
could be a while (no atm transactions for you)... Or even better if the data
were organized:

ACCT BALANCE ACCT_TYPE
---- ------- ---------
1 1000 checking
2 100 savings
1 500 savings


now what happens is:

query starts -- gets and keeps shared lock on block 1 (1000,checking). Update
starts -- gets x-lock on block 3 (500,savings -- updated to 100,savings) and
keeps it.

query keeps running....

update tries to get block 1 but cannot, query has it locked. update blocks.

query runs and gets to block 3, cannot get a shared lock.

We now have a deadlock. In order to get the right answer, we had to lock, but
by locking -- we deadlock. catch 22 -- what do we do?


This is why db2 supports dirty read (forget about locks, what a waste of time
right? who cares if you get the right answer, just blow through them).
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32246728
bgru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Gt

http://rsdn.ru/Forum/?mid=363428
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32248630
Gt_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt_
Гость
2bgru\r
\r
/topic/45859
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32251822
bgru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Gt_

Ну в итоге они согласились с http://rsdn.ru/Forum/?mid=363428
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32255238
bgru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Блокировки MSSQL, Oracle, IB
    #32255271
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищу Мерле\r
\r
/topic/12853&pg=4
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Блокировки MSSQL, Oracle, IB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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