Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / 15БД.doc
Скачиваний:
35
Добавлен:
30.05.2020
Размер:
410.11 Кб
Скачать

6 Управління блокуваннями

Користувачу частіше за все не потрібно робити ніяких дій по управлінню блокуваннями. Всю роботу по установці, зняттю і дозволу конфліктів виконує спеціальний компонент серверу, званий менеджером блокувань. MS SQL Server підтримує різні рівні блокування об'єктів (або деталізацію блокувань), починаючи з окремим рядком таблиці і закінчуючи базою даних в цілому. Менеджер блокувань автоматично оцінює, яку кількість даних необхідно блокувати, і встановлює відповідний тип блокування. Це дозволяє підтримувати рівновагу між продуктивністю роботи системи блокування і можливістю користувачів діставати доступ до даних. Блокування на рівні рядка дозволяє найбільш точно управляти таким доступом, оскільки блокуються тільки дійсно змінні рядки. Безліч користувачів можуть одночасно працювати з даними з мінімальними затримками. Платнею за це є збільшення числа операцій установки і зняття блокувань, а також велика кількість службової інформації, яка доводиться берегти для відстежування встановлених блокувань. При блокуванні на рівні таблиці продуктивність системи блокування різко збільшується, оскільки необхідно встановити лише одне блокування і зняти її тільки після завершення транзакції. Користувач при цьому має максимальну швидкість доступу до даних. В той же час вони не доступні нікому іншому, тому що вся таблиця заблокована. Доводиться чекати, поки поточний користувач завершить роботу.

Дії, виконувані користувачами при роботі з даними, зводяться до операцій двох типів: їх читанню і зміні. В операції по зміні включаються дії по додаванню, видаленню і власне зміні даних. Залежно від виконуваних дій сервер накладає певний тип блокування з наступного переліку:

Колективні блокування. Вони накладаються при виконанні операцій читання даних (наприклад, SELECT ). Якщо сервер встановив на ресурс колективне блокування, то користувач може бути упевнений, що вже ніхто не зможе змінити ці дані.

Блокування оновлення. Якщо на ресурс встановлено колективне блокування і для цього ресурсу встановлюється блокування оновлення, то ніяка транзакція не зможе накласти колективне блокування або блокування оновлення .

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

Блокування масивного оновлення. Накладається сервером при виконанні операцій масивного копіювання в таблицю і забороняє звернення до таблиці будь-яким іншим процесам. В той же час декілька процесів, що виконують масивне копіювання, можуть одночасно вставляти рядки в таблицю.

Крім перерахованих основних типів блокувань SQL Server підтримує ряд спеціальних блокувань, призначених для підвищення продуктивності і функціональності обробки даних. Вони називаються блокуваннями намірів і використовуються сервером в тому випадку, якщо транзакція має намір дістати доступ до даних вниз за ієрархією і для інших транзакцій необхідно встановити заборону на накладення блокувань, які конфліктуватимуть з блокуванням, першою транзакцією, що накладається .

Раніше розглянуті блокування відносяться до даних. Крім перерахованих в середовищі SQL Server існує два інші типи блокувань: блокування діапазону ключів і блокування схеми (метаданих, що описують структуру об'єкту).

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

Блокування схеми використовується при виконанні команд модифікації структури таблиць для забезпечення цілісності даних.

Соседние файлы в папке лекции