Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 8936|Отговор: 0

SQL заключва NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Копирай линк]
Публикувано в 20.07.2016 г. 14:02:51 ч. | | |

NOLOCK
Когато тази опция е избрана, SQL Server чете или променя данни без никакви заключвания. В този случай потребителят може да прочете данни от нерегистрирана транзакция или връщане назад, известно като "мръсни данни".

ЗАДЪРЖАНЕ
Когато тази опция е избрана, SQL Server поддържа тази споделена заключваща система до края на цялата транзакция, без да я освобождава по пътя.

UPDLOCK
Когато тази опция е избрана, SQL Server използва заключване за промяна вместо споделено заключване при четене на данни и поддържа тази заключване до края на цялата транзакция или команда. Тази опция гарантира, че множество процеси могат да четат данни едновременно, но само този процес може да ги променя.

TABLOCK
Когато тази опция бъде избрана, SQL Server поставя споделено заключване върху цялата таблица, докато командата приключи. Тази опция гарантира, че другите процеси могат само да четат и да не променят данните.

ПАГЛОК
Тази опция е по подразбиране и при избране SQL Server използва споделена заключване на страницата.

TABLOCKX (Ексклузивна заключване на маса)
Когато тази опция бъде избрана, SQL Server ще заключи цялата таблица, докато командата или транзакцията приключи. Това ще предотврати други процеси да четат или променят данните в таблицата.

HOLDLOCK държи споделената заключваща система, докато цялата транзакция не бъде завършена, и трябва да бъде освободена веднага щом заключеният обект не е необходим, равно на нивото на изолация на СЕРИАЛИЗИРАЕМАТА транзакция

Операторът NOLOCK се изпълнява без издаване на споделено заключване, което позволява мръсни четения, което е равно на нивото на изолация на READ UNCOMMITTED транзакцията

PAGLOCK използва няколко заключвания на страници, при които се използва една заключване на маса

READPAST позволява на SQL сървъра да пропуска заключени линии и да изпълнява транзакции, а за нива на изолация на READ неангажирани транзакции пропуска само RID заключвания, не страници, зони и таблици

ROWLOCK налага използването на rowlock

TABLOCKX налага използването на изключителна заключване на ниво таблица, което предотвратява използването на таблицата от друга транзакция по време на транзакцията

UPLOCK принуждава използването на актуализации при четене на таблица без споделена заключване

Забележка: Разликата между заключването на таблица в база данни
SELECT * FROM TABLE WITH (HOLDLOCK) Други транзакции могат да четат таблицата, но не могат да актуализират или изтрият
SELECT * FROM TABLE WITH (TABLOCKX) Други транзакции не могат да четат, актуализират и изтриват таблици




Предишен:Заключвания, мръсни четения, неповторими четения и фалшиви четения в SQL
Следващ:SQL Server разглежда задънената ситуация и я освобождава
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com