Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
answer.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
54.69 Кб
Скачать
  1. Керування блокуваннями. Менеджер блокувань. Час очікування.

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

  1. Рівні блокувань

рівень 0 - заборона "забруднення" даних. Цей рівень вимагає, щоб змінювати дані могла тільки одна транзакція; якщо інший транзакції необхідно змінити ті ж дані, вона повинна очікувати завершення першої транзакції; рівень 1 - заборона "брудного" читання. Якщо транзакція початку зміну даних, то ніяка інша транзакція не зможе прочитати їх до завершення першої; рівень 2 - заборона неповторним читання. Якщо транзакція зчитує дані, то ніяка інша транзакція не зможе їх змінити. Таким чином, при повторному читанні вони будуть перебувати в первісному стані; рівень 3 - заборона фантомів. Якщо транзакція звертається до даних, то ніяка інша транзакція не зможе додати нові або видалити мають рядки, які можуть бути лічені при виконанні транзакції. Реалізація цього рівня блокування виконується шляхом використання блокувань діапазону ключів. Подібна блокування накладається не на конкретні рядки таблиці, а на рядки, що задовольняють певного логічного умові.

  1. Рівні ізоляції.

Рівень ізоляції визначає ступінь незалежності транзакцій один від одного.Найвищим рівнем ізоляції є серіалізуемость, що забезпечує повну незалежність транзакцій один від одного. Кожен наступний рівень відповідає вимогам усіх попередніх і забезпечує додатковий захист транзакцій. SQL Server підтримує всі чотири рівні ізоляції, визначені стандартом ANSI.Рівень ізоляції встановлюється командою: SET TRANSACTION ISOLATION LEVEL    {READ COMMITTED    | READ UNCOMMITTED    | REPEATABLE READ    | SERIALIZABLE} READ UNCOMMITED - незавершене читання, або допустимо чорнове читання.Нижчий рівень ізоляції, що відповідає рівню 0. Він гарантує тільки фізичну цілісність даних: якщо кілька користувачів одночасно змінюють одну і ту ж рядок, то в остаточному варіанті рядок буде мати значення, визначене користувачем, останнім змінив запис. По суті, для транзакції не встановлюється ніякого блокування, яка гарантувала б цілісність даних. Для установки цього рівня використовується команда: SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED READ COMMITTED - завершене читання, при якому відсутня чорнове, "брудне" читання. Проте в процесі роботи однієї транзакції інша може бути успішно завершена і зроблені нею зміни зафіксовані. У результаті перша транзакція буде працювати з іншим набором даних. Це проблема неповторним читання. Даний рівень ізоляції встановлений в SQL Server за замовчуванням і встановлюється за допомогою команди:   SET TRANSACTION ISOLATION LEVEL READ COMMITTED REPEATABLE READ - повторюване читання. Повторне читання рядка поверне спочатку лічені дані, незважаючи на будь-які оновлення, зроблені іншими користувачами до завершення транзакції. Проте на цьому рівні ізоляції можливе виникнення фантомів. Його установка реалізується командою: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ SERIALIZABLE - серіалізація. Читання заборонено до завершення транзакції. Це максимальний рівень ізоляції, який забезпечує повну ізоляцію транзакцій один від одного. Він встановлюється командою: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE У кожен момент часу можливий тільки один рівень ізоляції.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]