MS-SQL нюансы

Блокировки

Операции insert, update, delete блокируют затрагиваемые строки таблицы, для операции select это сказывается блокировкой на уровне таблицы целиком, но, у операции select есть 2 хинта (указателя), благодаря которым можно из заблокированой таблицы вычитывать строки:

WITH(READPAST) - читать зафиксированные строки (будут игнорироваться строки подвергающиеся добавлению/изменению/удалению в транзакциях сторонних сессий)

WITH(NOLOCK) - читать незафиксированные строки (грязные данные)

Если нужен WITH(NOLOCK) для всех запросов транзакции, тогда нужно перед началом транзакции указать уровень блокировки READ UNCOMMITTED, например так:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRAN;

Кстати, нам даны и другие уровни изоляции:

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ
  • SNAPSHOT
  • SERIALIZABLE

Как блокировать

Существуют следующие виды блокировок:

Вид Какие операции блокирует Что именно блокирует
Exclusive lock (X) Insert, Update, Delete блокировка страницы или строки
Shared lock (S) Insert, Update, Delete, Select блокировка страницы или строки
Update lock (U) Insert, Update, Delete блокировка страницы или строки, которая заблокирована с помощью Shared lock (S)
Intent locks (I):   намеренье о блокировки таблицы целиком, может быть следующим:
– Intent exclusive (IX) Insert, Update, Delete см. выше
– Intent shared (IS) Insert, Update, Delete, Select см. выше 
– Intent update (IU) Insert, Update, Delete см. выше 

Источник: 1

Оцени публикацию:
  • 0,0
Оценили человек: 0

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2019 YaPro.Ru

Главная » Веб-мастеру » MySQL »