SlideShare uma empresa Scribd logo
1 de 22
Professional Association for SQL Server




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

• Блокировки
 – Виды блокировок
 – Гранулярность блокировок
 – Уровни изоляции
• Взаимоблокировки
 – Классические взаимоблокировки
 – Неочевидные взаимоблокировки
 – Обработка взаимоблокировок
Виды блокировок - Shared




      X

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




      S
          X

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




      S
              U

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




                              IS
                     IS

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

•   Строка (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
Как избежать?

• Проектировать базу данных так, чтобы не было
  возможности дедлока 
• Выравнивать порядок использования таблиц в
  транзакциях
• Добавление или удаление индексов
• Смена уровня изоляции транзакции
• Нерешаемых дедлоков нет.. Есть варианты решения,
  которые не до конца устраивают
Ресурсы

•   Locking in the Database Engine
•   Analyze Deadlocks with SQL Server Profiler
•   Handling Deadlocks in SQL Server
•   Deadlock Trobleshot series

• Twitter to SQL
Professional Association for SQL Server




Взаимоблокировки, блокировки и
уровни изоляции в SQL Server
Резник Денис
Киев
@denisreznik
denisreznik@live.ru
http://reznik.uneta.com.ua

Mais conteúdo relacionado

Destaque

Destaque (6)

MS Swit 2012 - Windows 8 Application Lifecycle
MS Swit 2012 - Windows 8 Application LifecycleMS Swit 2012 - Windows 8 Application Lifecycle
MS Swit 2012 - Windows 8 Application Lifecycle
 
Sql rally 2013 columnstore indexes
Sql rally 2013   columnstore indexesSql rally 2013   columnstore indexes
Sql rally 2013 columnstore indexes
 
SqlSaturday199 - Deadlocks
SqlSaturday199 - DeadlocksSqlSaturday199 - Deadlocks
SqlSaturday199 - Deadlocks
 
масштабирование в Sql azure
масштабирование в Sql azureмасштабирование в Sql azure
масштабирование в Sql azure
 
MS DevDay - SQLServer 2014 for Developers
MS DevDay - SQLServer 2014 for DevelopersMS DevDay - SQLServer 2014 for Developers
MS DevDay - SQLServer 2014 for Developers
 
MS Swit 2012 - SQL Server 2012
MS Swit 2012 - SQL Server 2012MS Swit 2012 - SQL Server 2012
MS Swit 2012 - SQL Server 2012
 

Semelhante a 24 hop - Deadlocks

Преимущества NoSQL баз данных на примере MongoDB
Преимущества NoSQL баз данных на примере MongoDBПреимущества NoSQL баз данных на примере MongoDB
Преимущества NoSQL баз данных на примере MongoDBUNETA
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013it-people
 
Что нового в SQL Server 2014
Что нового в SQL Server 2014Что нового в SQL Server 2014
Что нового в SQL Server 2014Andrey Korshikov
 
По Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в DockerПо Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в DockerGonchik Tsymzhitov
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandraodnoklassniki.ru
 
2015-12-05 Дмитрий Еманов - Многоверсионная архитектура данных: аспирин или г...
2015-12-05 Дмитрий Еманов - Многоверсионная архитектура данных: аспирин или г...2015-12-05 Дмитрий Еманов - Многоверсионная архитектура данных: аспирин или г...
2015-12-05 Дмитрий Еманов - Многоверсионная архитектура данных: аспирин или г...HappyDev
 
SECON'2016. Еманов Дмитрий, "D" в ACID или чем быстрее бежать, тем больнее па...
SECON'2016. Еманов Дмитрий, "D" в ACID или чем быстрее бежать, тем больнее па...SECON'2016. Еманов Дмитрий, "D" в ACID или чем быстрее бежать, тем больнее па...
SECON'2016. Еманов Дмитрий, "D" в ACID или чем быстрее бежать, тем больнее па...SECON
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Ontico
 

Semelhante a 24 hop - Deadlocks (12)

No sql.mongodb scaling
No sql.mongodb scalingNo sql.mongodb scaling
No sql.mongodb scaling
 
Преимущества NoSQL баз данных на примере MongoDB
Преимущества NoSQL баз данных на примере MongoDBПреимущества NoSQL баз данных на примере MongoDB
Преимущества NoSQL баз данных на примере MongoDB
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
 
Что нового в SQL Server 2014
Что нового в SQL Server 2014Что нового в SQL Server 2014
Что нового в SQL Server 2014
 
По Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в DockerПо Вашей просьбе, продукты Atlassian в Docker
По Вашей просьбе, продукты Atlassian в Docker
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandra
 
SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация) SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация)
 
2015-12-05 Дмитрий Еманов - Многоверсионная архитектура данных: аспирин или г...
2015-12-05 Дмитрий Еманов - Многоверсионная архитектура данных: аспирин или г...2015-12-05 Дмитрий Еманов - Многоверсионная архитектура данных: аспирин или г...
2015-12-05 Дмитрий Еманов - Многоверсионная архитектура данных: аспирин или г...
 
High Load
High LoadHigh Load
High Load
 
SECON'2016. Еманов Дмитрий, "D" в ACID или чем быстрее бежать, тем больнее па...
SECON'2016. Еманов Дмитрий, "D" в ACID или чем быстрее бежать, тем больнее па...SECON'2016. Еманов Дмитрий, "D" в ACID или чем быстрее бежать, тем больнее па...
SECON'2016. Еманов Дмитрий, "D" в ACID или чем быстрее бежать, тем больнее па...
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 

Mais de Денис Резник

Mais de Денис Резник (11)

SqlSaturday199 - Columnstore Indexes
SqlSaturday199 - Columnstore IndexesSqlSaturday199 - Columnstore Indexes
SqlSaturday199 - Columnstore Indexes
 
Масштабирование в SQL Azure - SQL Azure Federations
Масштабирование в SQL Azure - SQL Azure FederationsМасштабирование в SQL Azure - SQL Azure Federations
Масштабирование в SQL Azure - SQL Azure Federations
 
Масштабирование в SQL Azure - SQL Azure Federations
Масштабирование в SQL Azure - SQL Azure FederationsМасштабирование в SQL Azure - SQL Azure Federations
Масштабирование в SQL Azure - SQL Azure Federations
 
SQL Server Denali
SQL Server DenaliSQL Server Denali
SQL Server Denali
 
Sql azure и все, все, все...
Sql azure и все, все, все...Sql azure и все, все, все...
Sql azure и все, все, все...
 
начинаем работать с Sql server compact
начинаем работать с Sql server compactначинаем работать с Sql server compact
начинаем работать с Sql server compact
 
Sql server 2011
Sql server 2011Sql server 2011
Sql server 2011
 
MS Swit 2010
MS Swit 2010MS Swit 2010
MS Swit 2010
 
WebMatrix
WebMatrixWebMatrix
WebMatrix
 
ASP.NET MVC 3
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3
 
SQL Server StreamIinsight - data processing in real time
SQL Server StreamIinsight - data processing in real timeSQL Server StreamIinsight - data processing in real time
SQL Server StreamIinsight - data processing in real time
 

24 hop - Deadlocks

  • 1. Professional Association for SQL Server Взаимоблокировки, блокировки и уровни изоляции в SQL Server Резник Денис Киев The Frayman Group MVP, MCT, MCITP, MCPD, MCTS
  • 2. Содержание • Блокировки – Виды блокировок – Гранулярность блокировок – Уровни изоляции • Взаимоблокировки – Классические взаимоблокировки – Неочевидные взаимоблокировки – Обработка взаимоблокировок
  • 6. Виды блокировок – Intent блокировки IS IS S
  • 7. Гранулярность блокировки • Строка (Key или RowID) • Диапазон ключей (несколько строк) • Страница • Экстент • Секция (включается дополнительной опцией) • Таблица • База Данных
  • 8. READ COMMITTED • Уровень изоляции по умолчанию • Нет «грязных чтений» • Блокировка на чтение снимается сразу по окончании операции • Возможны неповторяемые чтения
  • 9. Professional Association for SQL Server Демонстрация Дедлоки при уровне изоляции READ COMMITTED
  • 10. READ UNCOMMITTED • Самый лѐгкий уровень изоляции • Допускает «грязные чтения» • Не ставится блокировка на чтение • Блокировки на запись удерживаются до конца транзакции
  • 11. Professional Association for SQL Server Демонстрация Дедлоки при уровне изоляции READ UNCOMMITTED
  • 12. REPEATABLE READ • Более жесткий чем READ COMMITTED • Блокировка на чтение удерживается до конца транзакции • Повторяемые чтения • Возможно появление фантомных записей
  • 13. Professional Association for SQL Server Демонстрация Дедлоки при уровне изоляции REPEATABLE READ
  • 14. SERIALIZABLE • Самый жесткий уровень изоляции • Нет фантомных записей • Все блокировки удерживаются до конца транзакции
  • 15. Professional Association for SQL Server Демонстрация Дедлоки при уровне изоляции SERIALIZABLE
  • 16. READ COMMITTED SNAPSHOT • Оптимистичная блокировка • При изменении данных, старая версия строки сохраняется в хранилище версий в tempdb • Не ставится блокировка на чтение • Возможны неповторяемые чтения • Возможно появление фантомных записей
  • 17. Professional Association for SQL Server Демонстрация Дедлоки при уровне изоляции SNAPSHOT READ COMMITTED
  • 18. SNAPSHOT • Оптимистичная блокировка • Нет грязных чтений • Повторяемые чтения • Нет фантомных записей • Блокировка на чтение не ставится • При попытке пользователя изменить запись, которая в данный момент изменяется кем-то, генерируется ошибка
  • 19. Professional Association for SQL Server Демонстрация Дедлоки при уровне изоляции SNAPSHOT
  • 20. Как избежать? • Проектировать базу данных так, чтобы не было возможности дедлока  • Выравнивать порядок использования таблиц в транзакциях • Добавление или удаление индексов • Смена уровня изоляции транзакции • Нерешаемых дедлоков нет.. Есть варианты решения, которые не до конца устраивают
  • 21. Ресурсы • Locking in the Database Engine • Analyze Deadlocks with SQL Server Profiler • Handling Deadlocks in SQL Server • Deadlock Trobleshot series • Twitter to SQL
  • 22. Professional Association for SQL Server Взаимоблокировки, блокировки и уровни изоляции в SQL Server Резник Денис Киев @denisreznik denisreznik@live.ru http://reznik.uneta.com.ua