24 hop - deadlocks

Post on 14-Dec-2014

498 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Professional Association for SQL Server

Взаимоблокировки, блокировки и уровни изоляции в SQL Server

Резник ДенисКиевThe Frayman GroupMVP, MCT, MCITP, MCPD, MCTS

Содержание

• Блокировки– Виды блокировок– Гранулярность блокировок– Уровни изоляции

• Взаимоблокировки– Классические взаимоблокировки– Неочевидные взаимоблокировки– Обработка взаимоблокировок

Виды блокировок - Shared

S S

X

Виды блокировок - Exclusive

X

XS

Виды блокировок - Update

U

US

SX

Виды блокировок – Intent блокировки

S

ISIS

Гранулярность блокировки

• Строка (Key или RowID)• Диапазон ключей (несколько строк)• Страница• Экстент• Секция (включается дополнительной опцией)• Таблица• База Данных

READ COMMITTED

• Уровень изоляции по умолчанию• Нет «грязных чтений»• Блокировка на чтение снимается сразу по окончании

операции• Возможны неповторяемые чтения

Professional Association for SQL Server

ДемонстрацияДедлоки при уровне изоляции READ COMMITTED

READ UNCOMMITTED

• Самый лёгкий уровень изоляции• Допускает «грязные чтения»• Не ставится блокировка на чтение• Блокировки на запись удерживаются до конца

транзакции

Professional Association for SQL Server

ДемонстрацияДедлоки при уровне изоляции READ UNCOMMITTED

REPEATABLE READ

• Более жесткий чем READ COMMITTED• Блокировка на чтение удерживается до конца

транзакции• Повторяемые чтения• Возможно появление фантомных записей

Professional Association for SQL Server

ДемонстрацияДедлоки при уровне изоляции REPEATABLE READ

SERIALIZABLE

• Самый жесткий уровень изоляции• Нет фантомных записей• Все блокировки удерживаются до конца транзакции

Professional Association for SQL Server

ДемонстрацияДедлоки при уровне изоляции SERIALIZABLE

READ COMMITTED SNAPSHOT

• Оптимистичная блокировка• При изменении данных, старая версия строки

сохраняется в хранилище версий в tempdb• Не ставится блокировка на чтение• Возможны неповторяемые чтения• Возможно появление фантомных записей

Professional Association for SQL Server

ДемонстрацияДедлоки при уровне изоляции SNAPSHOT READ COMMITTED

SNAPSHOT

• Оптимистичная блокировка• Нет грязных чтений• Повторяемые чтения• Нет фантомных записей• Блокировка на чтение не ставится• При попытке пользователя изменить запись, которая

в данный момент изменяется кем-то, генерируется ошибка

Professional Association for SQL Server

ДемонстрацияДедлоки при уровне изоляции SNAPSHOT

Как избежать?

• Проектировать базу данных так, чтобы не было возможности дедлока

• Выравнивать порядок использования таблиц в транзакциях

• Добавление или удаление индексов• Смена уровня изоляции транзакции• Нерешаемых дедлоков нет.. Есть варианты решения,

которые не до конца устраивают

Professional Association for SQL Server

Взаимоблокировки, блокировки и уровни изоляции в SQL Server

Резник ДенисКиев@denisreznikdenisreznik@live.ruhttp://reznik.uneta.com.ua

top related