Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
Тут знакомый грит что у него на мсскл при удалении нескольких записей регулярно блокируется гораздо больше записей. Точно знаю, что оракл блокирует только на уровне записи и по дефолту реадеры не блокируют, неужели у мс другой подход ? А что у ИБ ?
7 май 03, 10:20    [192181]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Roman Ignatiev
Member

Откуда: Москва
Сообщений: 680
НАсколько знаю, в MSSQL выше 6.5 возможно установить параметр для блокировки отдельной записи.
У IB нет блокировок, версионная структура. При желании, конечно, блокировать можно - установить запрет другим транзакциям на запись в таблицу, но в обычном режиме такого не делается.
7 май 03, 10:38    [192214]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Zaxx
Guest
2 Roman Ignatiev

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

Что совсем нет блокировок ??? Две сессии будут одну запись одновременно редактировать ? Может всё-таки по чтению блокировок нет?
7 май 03, 11:21    [192280]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Roman Ignatiev
Member

Откуда: Москва
Сообщений: 680
Совсем нет :-))
Две транзакции как правило спокойно могут изменить одну запись, не говоря уже о чтении. И если одна из них сделает rollback - все будет в порядке,
Разбор начинается при commit...
http://www.ibase.ru/devinfo/ibtrans.htm
7 май 03, 11:39    [192314]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
cpr
Member

Откуда: Rostov-on-Don
Сообщений: 767
У MSSQL как и у его родного брата сайбэйза проблемы с блокировкой на уровне строк пожизни.
7 май 03, 12:04    [192363]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
заглянул на мсдн ... там грится что есть хинт rowlock который в принципе может, но типа по одной блокировать дорого и по дефолту сервер сам решает ! Т.е. майкрософт умный и сам решает и когда захочет может по пол таблицы заблокировать. Так что теперь я должен каждый раз приписывать rowlock ??? и чем мне это грозит на 10 млн записях ?
Да еще забавный пример там был, блокировка по диапозону индекса, типа мне не дадут вставить запись если кто-то в данный момент просматривает (залочел) этот дипазон индекса.
Это я что то недопонял или как раз за это ораклу и платят ?
7 май 03, 13:37    [192493]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
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 для каждой записи? В любом случае согласитесь, что если Вы собрались делать нечто не совсем стандартным способом, надо как-то это серверу указать.

Да еще забавный пример там был, блокировка по диапозону индекса, типа мне не дадут вставить запись если кто-то в данный момент просматривает (залочел) этот дипазон индекса.
Наверное лучше сказать так: вставка будет произведена после того, как кто-то просмотрит тот диапазон. Не факт что это медленнее, чем создание новой версии диапазона, как это делается в Оракле или Интербейзе.
7 май 03, 15:00    [192599]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
теперь я понимаю почему разные весовые категории ...


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


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


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


ну во первых вы похоже даже не пытались посмотреть как это сделанно в оракле, но грубить пока не буду :) ... а факты ... ну надеюсь вы не хотите сказать, что оракловая реализация медленее ?
http://www.eweek.com/slideshow/0,3018,sid=0&s=1590&a=23120,00.asp
7 май 03, 15:25    [192638]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Дед Маздай
Member

Откуда:
Сообщений: 655
Я не стал бы утверждать категорично, однако приведенные Вами факты довольно наглядно свидетельствуют, что оракловая реализация медленнее.
7 май 03, 17:07    [192788]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Дед Маздай
Member

Откуда:
Сообщений: 655
Поясню, что я имею в виду. Представленные Вами результаты обсуждались здесь еще в марте прошлого года. На 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).
7 май 03, 17:30    [192813]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
урл ? неверю (С) Станиславский :)

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

так вот может ли кто сдесь аргументировано опровергнуть:
мсскл получает близкие результаты с ораклом и дб2 за счет того что блокирует не на уровне записей, а на уровне целых страниц и таблиц.
7 май 03, 17:47    [192835]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
... добалю:
а если поставить в равные условия (hint ROWLOCK), то большая вероятность, что мсскл загнется от недостатка памяти.
7 май 03, 17:55    [192851]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Дед Маздай
Member

Откуда:
Сообщений: 655
Вы сами себе противоречите. Если бы в условиях 1000 одновременных пользователей менеджер блокировок SQL Server выбирал крупную гранулярность блокировок, то это было бы сразу заметно по возрастанию response time. Кроме того, в декабре мы здесь обсуждали потребные затраты на блокирование ресурса в разных СУБД и пришли к выводу, что в SQL Server они, мягко говоря, не превышают аналогичные показатели в Oracle. Поэтому "загнется от недостатка памяти" - это просто бред какой-то.
7 май 03, 18:21    [192906]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
Не понял про респонс тайм ... если я заблокировал пол таблицы то мне наверно всетаки проще с ней манипулировать, или нет ? ну да ладно речь не о том
урл ! где урл ? в декабре по слову блокировка ничего нет. ну и раз уж пошла такая пьянка тыкните в мсдн, а то я пока увидел 2-3 левых кента, настоятельно не рекомендующих таким заниматся из-за "эскалация блокировок". к стате, чо это такое ?
и еще где параметер который нужно выставить, чтоб каждый раз не писать хинт ?
7 май 03, 19:16    [192969]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
Ну вот в чем главное различие:

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.
7 май 03, 19:31    [192985]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Дед Маздай
Member

Откуда:
Сообщений: 655
1. Обсуждение приведенных Вами результатов тестов здесь: https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=5003
2. Обсуждение того, где сколько стоит каждая блокировка, здесь:
https://www.sql.ru/forum/actualthread.aspx??bid=10&tid=12853
Там же я, кстати, высказывался, почему на мой взгляд, адаптивный подход к масштабу блокирования предпочтительнее тупого блокирования уровня записи.
3. Видите ли, response time здесь при том, что если бы SQL Server проврался и стал блокировать постранично, поэкстентно, потаблично, податабейзно там, где в данных конкретных условиях предпочтителен масштаб уровня записи, мы с Вами бы немедленно получили на тысячe конкурентных пользователей жуткий contention с неизбежными lock timeouts, deadlocks и всеми прочими неприятностями, о которых Вы пишете. Что, естественно, немедленно посадило бы response time. А здесь мы наблюдаем очевидное замедление производительности только за счет кривого доступа. Как только берется native API, все сразу встает на свои места. Не знаю, насколько скажется поддержка CLR-типов в Юконе, но я глубоко убежден, что изо всех СУБД на сегодня реляционный движок SQL Server 2000 - самый шустрый.
7 май 03, 21:27    [193032]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
Что ж вас так задел этот тест ??? я его привел только для того чтоб показать что многие "независимые" считают, что оракл гораздо быстрее, похоже у вас другое мнение ... но как-то я больше доверяю сылкам :)
на шустрости :) так фокс и 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.

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

на счет мультиверсионости: каким образом тогда в мс можно получить какой либо отчет по таблице если в ней работает пара сотен юзеров (апдейтят записи), я так понимаю, что в этом случае ставятся блокировки и считать эти записи совсем нельзя ?
8 май 03, 12:32    [193548]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
все похоже нашел все различия:
http://dbforums.com/arch/48/2002/5/392828" TARGET="_blank">http://dbforums.com/arch/48/2002/5/392828
8 май 03, 13:37    [193716]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Crip
Member

Откуда:
Сообщений: 2490
И что это? Очередной вопль фаната Oracle? На сравнение СУБД это совсем не похоже , не говоря уже про достоверность фактов приведенных в постинге.
Я вполне понимаю людей с недоверием относящихся к продуктам от MS, но это не повод разводить бессмысленную демагогию...
8 май 03, 14:01    [193769]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
незнаю чо это, но по поводу оракле вроде все так и есть. ну а что на счет мсскл ? это правда (я про мультиверсионность и эсколацию) ?

просто стандартная ситуация:
каким образом тогда в мс можно получить какой либо отчет по таблице если в ней работает пара сотен юзеров (апдейтят записи), я так понимаю, что в этом случае ставятся блокировки и считать эти записи совсем нельзя ?
8 май 03, 14:40    [193847]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
killed
Member

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

Прочел статью. Там достаточно много интересных и справедливых мыслей.
Что касается достоверности данных (могу оценить только одну сторону - Оракл) - я не увидел откровенных ляпов и сплошной демагогии. Покажите конкретные выдержки из статьи. Их можно обсудить.
8 май 03, 14:41    [193848]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Zaxx
Guest
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." это конечно противоречит мелкософтовкой рекламе, но это учитывая проблемы с блокировками и изоляциями это так и есть.
8 май 03, 15:14    [193905]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
vov
Guest
Ну а что тут скрывать - есть проблемы с блокировками в MSSQL.
И не от хорошей жизни на многих длинных отчетах ставят хинты NOLOCK (read uncommited). И если бы в MSSQL была версионность, жить было бы легче.

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

P.S.: Тем не менее мне больше нравится MSSQL - наверно я мазохист...
8 май 03, 15:54    [193981]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
Gt
Guest
OK, с блокировками ясно, но тут еще услышал мнение, что у блокировочных и версионных бд свои достоинства и недостатки. траблы с блокировками - ясно, а в чем минус версионных ? жрут память ? скорость ? мсскл щас вроде на tcp.org и в нонкластеред лидирует.
8 май 03, 21:57    [194236]     Ответить | Цитировать Сообщить модератору
 Re: Блокировки MSSQL, Oracle, IB  [new]
SiDen
Member

Откуда:
Сообщений: 518
При одинаковой реализации (предпологая что дураков нет в командах реализующих)теоретически версионки уступают в скорости.
Ну не надо неверсионкам лазить в редологи на селектах. Вопрос открыт при возникших блокировках, имхо тут от реализации задуманного девелопером зависит.
ЗЫ: и скока мона их сравнивать...
9 май 03, 09:24    [194352]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить