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

Фоновый процесс называемый детектором взаимоблокировок

Фоновый процесс называемый детектором взаимоблокировокВ IBM DB2 запущен фоновый процесс, называемый Детектором взаимоблокировок. Этот процесс ищет и разрешает ситуации, приводящие к взаимоблокировкам. Процесс, выбранный в качестве виновника взаимоблокировки, откатывается, при этом генерируется специальная ошибка (SQLCODE-901, SQLSTATE 40001). В качестве виновника взаимоблокировки чаще всего признается процесс чтения, поскольку при выборе такого процесса применяется принцип “наименьших затрат”. Если взаимоблокировки становятся проблемой, IBM рекомендует использовать средства мониторинга для сбора информации о подобных ситуациях и далее оптимизировать систему или перепроектировать используемые приложения. В Microsoft SQL Server 2008 задействован собственный алгоритм обнаружения и разрешения взаимоблокировок, в целом аналогичный методам, используемым в Oracle и DB2. Взаимоблокировки разрешаются автоматически или вручную, с помощью специальной консоли. Можно также определить сеанс как потенциального виновника всех взаимоблокировок. Для этого используется параметр DEADLOCK_PRIORITY. Еще один прием работы с взаимоблокировками предполагает установку для сеанса параметра LOCK_TIMEOUT (максимальное время блокировки). По истечении заданного времени SQL Server возвращает ошибку (Error 1205 for SQL Server, SQLSTATE 40001) и откатывает транзакцию. Разрешение ситуаций взаимоблокировки, как и в других СУБД, сводится к перезапуску транзакции, перепроектированию приложения и т. п. Отслеживать ситуации взаимоблокировки в Microsoft SQL Server 2008 можно путем установки флагов трассировки (1204 и 1222). При этом информация о взаимоблокировках будет накапливаться в журнале ошибок SQL Server.

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

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