2

Я знаю, что SQL Server 2000 имеет пессимистическую модель параллелизма. И оптимистическая модель была добавлена ​​в SQL Server 2005. Итак, как я могу определить, использую ли я модель пессимистического параллелизма или оптимистичную в SQL Server 2005 и 2008?В SQL Server 2005 и 2008, как сказать, что я использую пессимистическую модель параллелизма или оптимистичную?

Спасибо.

+0

Я думаю, что это зависит от целей данных/программирования, которые вы пытаетесь достичь. Честно говоря, попытка категоризации множества доступных в настоящее время SQL-серверов в простых «оптимистичных» и «пессимистичных» ведрах ограничена и близорука. {Прочитать Uncommined через Serializable} раз {объявленные против неявных транзакций} раз {различные виды моментальных снимков} до {log shipping, mirroring, database replication} power равно более двух решений. –

ответ

2

SQL 2005 (и 2008) представляет собой вскрытие SNAPSHOT. Это способ перехода к оптимистичному параллелизму. Взгляните на Transaction Isolation and the New Snapshot Isolation Level article:

Isolation level  Dirty Reads Non-repeatable Phantom reads Concurrency 
            reads       control 
READ UNCOMMITTED  Yes   Yes   Yes   Pessimistic 
READ COMMITTED  No   Yes   Yes   Pessimistic 
(with locking)  
READ COMMITTED  No   Yes   Yes   Optimistic 
(with snapshot) 
REPEATABLE READ  No   No    Yes   Pessimistic 
SNAPSHOT    No   No    No    Optimistic 
SERIALIZABLE   No   No    No    Pessimistic 
+0

Как правило, я стараюсь делать непростые ответы на вопросы. Вот оно. Нечеткие слова, такие как оптимистичные и пессимистические, на самом деле ничего не значат. Наверное, вы могли заметить, что разница между оптимистическим и пессимистичным заключается в том, где в процессе происходит блокировка. Но точка покупки SQLServer и выплаты всех этих денег была STOP, беспокоясь о таких вещах. Ответы «да/нет» на диаграмме выше. Дайте информацию, которую вы можете использовать, чтобы понять последствия ваших выборов в отношении уровня изоляции. Подумайте о транзакциях через первые три столбца ответов на диаграмме. – jerry

0

После прочтения некоторых статей и документов от Microsoft. Я получил следующий вывод.

В SQL Server 2005+

  • Если вы используете чтение незавершенных, повторяемых чтения или сериализуемого уровня изоляции, вы используете пессимистическую модель параллелизма.
  • Если вы используете моментальный снимок уровень изоляции, вы используете оптимистичную модель параллелизма.
  • Если вы используете чтения совершил уровень изоляции и настройки READ_COMMITTED_SNAPSHOT базы данных является ON, то вы используете оптимистическую модель параллелизма
  • Если вы используете чтения стремится уровень изоляции и настройки базы данных READ_COMMITTED_SNAPSHOT является OFF, то вы используете пессимистическую модель параллельности

Однако мне все еще нужно подтверждение. Кроме того, если есть какой-то код для проверки модели параллелизма, это было бы здорово.

0

В основном:

Пессимистический: вы блокировки записи только для вас, пока вы не закончили с ним. Итак, прочитайте , совершенный уровень изоляции транзакции. (не исключено, как вы сказали)

Оптимистичный контроль параллелизма работает при допущении, что конфликты ресурсов между несколькими пользователями маловероятны, и позволяет транзакции выполнять без блокировки любых ресурсов. Ресурсы проверяются только тогда, когда транзакции пытаются изменить данные. Это определяет, произошел ли какой-либо конфликт (например, путем проверки номера версии). В случае возникновения конфликта приложение должно прочитать данные и повторить попытку. Оптимистичный контроль параллелизма не предоставляется продуктом, но его можно вручную создать, выполнив отслеживание доступа к базе данных. (Source)