Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Режимы блокировки Microsoft SQL Server

Режимы блокировки Microsoft SQL ServerSQL Server 2008 устанавливает различные режимы блокировки, основываясь на собственных решениях относительно необходимых затрат. По умолчанию блокировка устанавливается на уровне строк, затем может быть повышена до уровня страниц или таблиц, когда транзакция превышает свой порог эскалации (т. е. когда инструкция SQL запрашивает более 5 тыс. блокировок в одной таблице или индексе или когда общее количество блокировок в экземпляре сервера выходит за установленный порог). Этот параметр не конфигурируется и устанавливается СУБД SQL Server самостоятельно в каждой конкретной ситуации. Классическая взаимоблокировка возникает, когда один сеанс ожидает установки блокировки некоторого общего ресурса, который заблокирован другим сеансом, ожидающим блокировки ресурса, занятого первым сеансом. Представьте себе ситуацию, в которой первый сеанс блокирует ресурс А, ожидая возможности блокировки ресурса Б, а в это время второй сеанс блокирует ресурс Б, пытаясь получить доступ к ресурсу А. Обычно СУБД разрешает подобную ситуацию автоматически, откатывая изменения одного из процессов и таким образом освобождая заблокированный им ресурс. В Oracle реализован сложный механизм, поддерживающий правило “процессы чтения и записи не могут блокировать друг друга”. При этом каждому процессу предоставляется собственный целостный снимок данных, не содержащий неподтвержденных изменений. Однако в Oracle все же иногда происходят взаимоблокировки, которые обычно разрешает сама СУБД. В редких случаях требуется ручное разрешение взаимоблокировок путем выбора так называемого “процесса-виновника”. Наиболее распространенными типами взаимоблокировок являются ORA-00060 (взаимоблокировка очереди) и ORA-04020 (взаимоблокировка кэша библиотеки). Для предотвращения взаимоблокировок используют предложение NOWAIT или устанавливают для сеанса максимальное время ожидания. Среди других приемов можно упомянуть явные блокировки и использование в транзакциях уровней изоляции. Разрешить взаимоблокировки можно и вручную, с помощью интерфейсов Oracle.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *