24 hop - Deadlocks

22
Professional Association for SQL Server Взаимоблокировки, блокировки и уровни изоляции в SQL Server Резник Денис Киев The Frayman Group MVP, MCT, MCITP, MCPD, MCTS

description

 

Transcript of 24 hop - Deadlocks

Page 1: 24 hop - Deadlocks

Professional Association for SQL Server

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

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

Page 2: 24 hop - Deadlocks

Содержание

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

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

Page 3: 24 hop - Deadlocks

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

S S

X

Page 4: 24 hop - Deadlocks

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

X

XS

Page 5: 24 hop - Deadlocks

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

U

US

SX

Page 6: 24 hop - Deadlocks

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

S

ISIS

Page 7: 24 hop - Deadlocks

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

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

Page 8: 24 hop - Deadlocks

READ COMMITTED

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

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

Page 9: 24 hop - Deadlocks

Professional Association for SQL Server

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

Page 10: 24 hop - Deadlocks

READ UNCOMMITTED

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

транзакции

Page 11: 24 hop - Deadlocks

Professional Association for SQL Server

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

Page 12: 24 hop - Deadlocks

REPEATABLE READ

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

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

Page 13: 24 hop - Deadlocks

Professional Association for SQL Server

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

Page 14: 24 hop - Deadlocks

SERIALIZABLE

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

Page 15: 24 hop - Deadlocks

Professional Association for SQL Server

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

Page 16: 24 hop - Deadlocks

READ COMMITTED SNAPSHOT

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

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

Page 17: 24 hop - Deadlocks

Professional Association for SQL Server

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

Page 18: 24 hop - Deadlocks

SNAPSHOT

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

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

Page 19: 24 hop - Deadlocks

Professional Association for SQL Server

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

Page 20: 24 hop - Deadlocks

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

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

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

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

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

Page 22: 24 hop - Deadlocks

Professional Association for SQL Server

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

Резник ДенисКиев@[email protected]://reznik.uneta.com.ua