Четене без ангажимент
- Ако данните се променят в една транзакция, изборът на тези данни (в друга транзакция или без транзакция) няма да чака, докато първата транзакция приключи и ще върне въведени данни за незаети транзакции.
- Ако данните се четат в една транзакция, актуализациите на тези данни в друга транзакция няма да чакат, докато първата транзакция приключи.
- Споделените ключалки не се използват. Идентично с настройката т той NOLOCK намек за всички селекции в Read Committed.
- Изключителните заключвания са разрешени по време на изпълнение на оператор и деактивирани в края o в транзакция .
Read Committed + read_committed_snapshot off
(alter database xxx set read_committed_snapshot off)
- Ако данните се променят в една транзакция, изборът на тези данни (в друга транзакция или без транзакция) ще изчака, докато завърши първата транзакция. Селе ct с NOCHECK подсказка ще върне променени, но незаети данни.
- Ако данните се четат в една транзакция, актуализациите на тези данни в друга транзакция няма да чакат, докато първата транзакция приключи.
- Споделените заключвания се активират по време на изпълнението на оператора и се деактивират в края на състоянието nt изпълнение .
- Изключителните заключвания се активират по време на изпълнението на оператора и се деактивират в края на транзакцията .
Read Committed + read_committed_snapshot on
(променете база данни xxx, задайте read_committed_snapshot on)
- Ако данните се променят в една транзакция, изборът на тези данни (в друга транзакция или без транзакция) няма да чака, докато първата транзакция приключи, а ще върне стойности в момента t от начало на транзакцията . Изберете с на Съвет за NOCHECK ще върне променени, но незаети данни.
- Ако данните се четат в една транзакция, актуализациите на тези данни в друга транзакция няма да чакат, докато първата транзакция приключи.
- Споделените ключалки не се използват. Вместо това се използва механизмът за версия на реда – данните от актуализираните записи се съхраняват в tempdb .
- Изключителните заключвания се активират по време на изпълнение на оператора и се деактивират в края на транзакцията .
Повтарящо се четене
- Ако данните се променят в една транзакция, изборът на тези данни (в друга транзакция или без транзакция) ще изчака, докато първата транзакция приключи. Изберете с на Подсказката за NOLOCK ще върне променени, но незаети данни.
- Ако данните се четат в една транзакция, актуализациите на тези данни в друга транзакция ще изчакат, докато първата транзакция приключи.
- Споделените заключвания се активират по време на изпълнението на оператора и се деактивират в края на транзакцията , за разлика от Read Committed.
- Изключителните заключвания се активират по време на изпълнението на оператора и се деактивират в края на транзакцията .
Може да се сериализира
- Ако данните се променят в една транзакция, изборът на тези данни (в друга транзакция или без транзакция) ще изчака, докато първата транзакция приключи. Изберете с Намек за NOLOCK ще връщане на променени, но незаети данни.
- Ако данните се четат в една транзакция, актуализациите на тези данни в друга транзакция ще изчакат, докато първата транзакция приключи.
- Споделените заключвания се активират по време на изпълнение на оператора и се деактивират в края на транзакцията .
- Изключителните заключвания се активират по време на изпълнението на оператора и се деактивират в края на транзакцията.
- Изключителното заключване на диапазона се активира за ключове, които отговарят на диапазона на критериите за заявка. Вмъкванията на нови записи, попадащи в този диапазон, не са разрешени. Идентично на настройката на ЗАДРАЖАЙТЕ CK намек за всички SELECT в Прочетете Commited.
Моментна снимка
(alter database xxx set enable_snapshot_isolation on)
- Ако данните се променят в една транзакция, изборът на тези данни (в друга транзакция или без транзакция) няма да чака, докато първата транзакция приключи. и ще върне стойности в момента от начало на транзакцията . Изберете с Намек за NOLOCK ще връщане на променени, но незаети данни.
- Ако данните се четат в една транзакция, актуализациите на тези данни в друга транзакция няма да чакат, докато първата транзакция приключи.
- Споделените ключалки не се използват. Вместо това се използва механизмът за версия на реда – данните от актуализираните записи се съхраняват в tempdb .
- Изключителните заключвания се активират по време на изпълнението на оператора и се деактивират в края на транзакцията.
Тествано на MSSQL 2014.