Чего ожидать от изменения уровня изоляции транзакции по умолчанию с READ_COMMITTED_SNAPSHOT на READ_COMMITTED?

В SQL Server уровень изоляции по умолчанию - READ_COMMITTED, но в SQL Azure уровень изоляции по умолчанию - READ_COMMITTED_SNAPSHOT.

Предположим, я изменил уровень по умолчанию на моем сервере SQL Azure на READ_COMMITTED_SNAPSHOT (используя SET TRANSACTION ISOLATION LEVEL), чтобы он вел себя как SQL Server.

Какие негативные последствия мне следует ожидать?


person sharptooth    schedule 10.01.2013    source источник
comment
Короткий ответ заключается в том, что вы не можете сделать это в SQL Azure: stackoverflow.com/questions/2036986/   -  person twoleggedhorse    schedule 10.01.2013
comment
@twoleggedhorse: Это невозможно сделать для каждой базы данных, но это можно сделать для каждого соединения, не так ли?   -  person sharptooth    schedule 10.01.2013


Ответы (1)


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

  • В True SNAPSHOT гораздо меньше «сюрпризов», чем в RCSI. Поскольку версия строк «моментального снимка» четко определена в истинном SNAPSHOT в момент начала транзакции, она не страдает от проблем RCSI, связанных с просмотром разных версий строк внутри одной и той же транзакции (что приводит к очень тонким и трудным для понимания проблемам)
  • Вы получите конфликты обновлений вместо тупиковых ситуаций, но ровно вместо "вместо". Есть некоторые отличия, и определенно приложение может не ожидать появления нового кода ошибки 3960.

Я бы рекомендовал перейти на Реализация изоляции моментальных снимков или зафиксированных моментальных снимков при чтении в SQL Server: руководство.

person Remus Rusanu    schedule 10.01.2013
comment
Дело в том, что вы не можете изменить этот параметр в SQL Azure. - person twoleggedhorse; 10.01.2013
comment
@twoleggedhorse: вообще-то можете. social.technet.microsoft.com/ вики / содержание / статьи / - person Remus Rusanu; 10.01.2013
comment
@twoleggedhorse: Вообще-то ты прав. Я прочитал OP (и ответил на такие ...) как «переход с RCSI на SNAPSHOT», что возможно. В Azure невозможно изменить RCSI на READ COMMITTED. - person Remus Rusanu; 10.01.2013
comment
+1 Нечасто признают, что я прав - мне это понравится :) - person twoleggedhorse; 10.01.2013