Сравнение настроек базы данных SQL Server с уровнями изоляции

За последние несколько лет мы заметили увеличение числа взаимоблокировок и длительных транзакций в нашей базе данных SQL Server (2008r2). В настоящее время мы запускаем нашу базу данных со следующими настройками ALLOW_SNAPSHOT_ISOLATION OFF а также READ_COMMITTED_SNAPSHOT OFF, Блокировки тупика управляются из кода с использованием процесса повторных попыток / ожидания.

Наш код приложения (C#) создает SqlConnection используя конструктор по умолчанию (от декомпиляции IsolationLevel.Unspecified) который, я считаю, позволяет SQL делать свое дело, которое в нашем случае будет таким же, как READ COMMITTED (Я думаю).

Мы собираемся представить снимки, установив ALLOW_SNAPSHOT_ISOLATION ON а также READ_COMMITTED_SNAPSHOT ON и переопределить конструктор C# с RepeatableRead, Я считаю, что эта комбинация настроек позволит нашему коду функционировать так же, как и сейчас. Это позволит нам постепенно оценить нашу кодовую базу, чтобы убедиться, что изменение уровня изоляции и моментальных снимков не оказывает негативного влияния на то, как мы воспринимаем процедуры SQL в настоящее время. Нам, конечно, нужно добавить SET TRANSACTION ISOLATION LEVEL SNAPSHOTв начале любой процедуры, которую мы хотим извлечь из снимка (чтобы переопределить настройку C# IsolationLevel.RepeatableRead).

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

Я просто ищу подтверждение того, что мое понимание верно. Если я не прав, что мне нужно сделать после внесения 2 изменений в базу данных, чтобы смоделировать нашу текущую рабочую среду?

0 ответов