Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 8936|Відповідь: 0

SQL блокує NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Копіювати посилання]
Опубліковано 20.07.2016 14:02:51 | | |

NOLOCK
Коли ця опція вибрана, SQL Server зчитує або змінює дані без жодних блокувань. У такому випадку користувач може прочитати дані з незафіксованої транзакції або відкату назад, відомих як «брудні дані».

УТРИМАЙТЕ ЗАМОК
Коли ця опція вибрана, SQL Server зберігає цей спільний блок до кінця всієї транзакції, не розкриваючи його на ходу.

UPDLOCK
Коли це опцію вибрано, SQL Server використовує modify lock замість спільного блокування при читанні даних і зберігає цей блок до кінця всієї транзакції або команди. Ця опція гарантує, що кілька процесів можуть одночасно читати дані, але лише цей процес може їх змінювати.

TABLOCK
Коли ця опція вибрана, SQL Server встановлює спільне блокування на всю таблицю до завершення команди. Ця опція гарантує, що інші процеси можуть лише читати і не змінювати дані.

ПАГЛОК
Ця опція є опцією за замовчуванням, і при виборі SQL Server використовує спільне блокування сторінки.

TABLOCKX (Ексклюзивний замок столу)
Коли це опцію вибрано, SQL Server встановлює блокування на всю таблицю до завершення команди або транзакції. Це завадить іншим процесам читати або змінювати дані в таблиці.

HOLDLOCK зберігає спільний замок до завершення всієї транзакції і повинен бути звільнений, щойно заблокований об'єкт не потрібен, що дорівнює рівню ізоляції СЕРІАЛІЗОВАНОЇ транзакції

Оператор NOLOCK виконується без видачі спільного блокування, що дозволяє здійснювати брудні читання, що дорівнює рівню ізоляції транзакції READ UNCOMMITTED

PAGLOCK використовує кілька сторінкових замків, де застосовується один замок для столу

READPAST дозволяє sql-серверу пропускати будь-які заблоковані рядки та виконувати транзакції, а для рівнів ізоляції READ UNCOMMITTED транзакцій пропускає лише блокування RID, а не блокування сторінок, зони та таблиць

ROWLOCK забезпечує застосування rowlock

TABLOCKX забезпечує використання ексклюзивного блокування на рівні таблиці, яке не дозволяє будь-яким іншим транзакціям використовувати таблицю під час транзакції

UPLOCK змушує використовувати оновлення при читанні таблиці без спільного блокування

Примітка: Різниця між блокуванням таблиці в базі даних
ВИБРАТИ * З ТАБЛИЦІ З (HOLDLOCK) Інші транзакції можуть читати таблицю, але не можуть оновлювати чи видаляти
ВИБРАТИ * З ТАБЛИЦІ З (TABLOCKX) Інші транзакції не можуть читати, оновлювати та видаляти таблиці




Попередній:Блокування, брудні читання, неповторювані читання та хибні читання в SQL
Наступний:SQL Server перевіряє глухий кут і звільняє його
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com