Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekcii (1).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать
    1. Блокировки и уровни изоляции

Для предотвращения конфликтов SQL сервер может ограничить одновременный доступ к данным. Запреты на работу с данными называются блокировками. Для поддержки блокировок определены уровни изоляции, которые определяют, какие типы конфликтов допустимы. В табл. 1 перечислены уровни изоляции и операции, разрешенные на каждом уровне.

Табл. 1. Разрешенные операции:

Уровень изоляции

Потерянное обновление

«Грязное» чтение

Неповторяющееся чтение

Фантомная вставка

READ UNCOMMITED

нет

да

да

да

READ COMMITED

нет

нет

да

да

REPEATABLE READ

нет

нет

нет

да

SERIALIZABLE

нет

нет

нет

нет

  1. READ UNCOMMITED (неподтвержденное чтение). Самый низкий уровень изоляции, поддерживается защита только от потерянного обновления. Если пользователь изменяет данные, другие пользователи не могут изменить их, пока первая транзакция полностью не завершится. Тем не менее, разрешено «грязное чтение», т.е. если первая транзакция запишет какие-то данные, вторая их прочитает, а потом первая транзакция будет отменена, то получится, что вторая транзакция прочитала данные, которые никогда не существовали.

  2. READ COMMITED (подтвержденное чтение). Запрещено «грязное чтение»: если пользователь изменяет данные, другие пользователи не могут считать их, пока изменение (транзакция) полностью не завершится. Однако существует проблема неповторяющегося чтения: если первый пользователь начал работу и прочитал данные, после этого второй пользователь изменил эти же данные и успешно зафиксировал изменения – то первый пользователь будет продолжать работу с уже изменёнными данными.

  3. REPEATABLE READ (повторяющееся чтение). Повторное чтение строки возвратит первоначально считанные данные, любые обновления, произведенные другими пользователями до завершения транзакции, запрещены. Тем не менее, на этом уровне могут возникать фантомы.

  4. SERIALIZABLE (упорядоченность). Самый высокий уровень изоляции. Результат выполнения транзакция такой же, как если бы они выполнялись по очереди. Невозможны никакие ошибки параллельного доступа.

    1. Грануляция блокировок (уровни блокирования)

Заблокировать можно различные объекты БД. Наиболее часто используются следующие уровни блокирования:

  • уровень БД (база данных, полностью);

  • уровень страницы (на физическом уровне БД поделена на блоки одного размера (страницы), размер страницы по умолчанию – 8 килобайт, однако его можно изменить);

  • уровень таблицы;

  • уровень строки;

В зависимости от уровня блокирования будет изменяться быстродействие базы данных. Блокировка при меньшей гранулярности, например на уровне строк, увеличивает параллелизм, но в то же время увеличивает расходы на обработку, поскольку при большом количестве блокируемых строк требуется больше блокировок.

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