ВУЗ:
Составители:
Рубрика:
тупиковые (deadlocks) блокировки. Для избежания подобных проблем имеется специальный
механизм разрешения конфликтов тупикового блокирования. Кроме того для минимизации
возможности их образования необходимо соблюдать ряд правил при разработке кода транзакции:
минимизировать длительность транзакции, использовать низкий уровень изоляции, избегать в
транзакции взаимодействия с пользователем и т.д.
В командах SELECT, DELETE, UPDATE и INSERT можно с помощью специальных
ключевых слов, или хинтов (hint) управлять блокировками и уровнем изоляции:
HOLDLOCK – для удержания коллективной блокировки до конца транзакции;
NOLOCK – разрешает грязное чтение;
PAGLOCK – блокировка на уровне страницы;
READCOMMITTED – установка первого уровня изоляции;
ROWLOCK – блокировка на уровне строки;
SERIALIZABLE – установка высшего уровня изоляции;
TABLOCK – блокировка на уровне таблицы;
TABLOCKX – блокировка на уровне таблицы до завершения транзакции.
Имеются и другие хинты.
Задание 1. Создать несколько одновременно работающих процессов, соединенным с
одним и тем же сервером и использующих одни и те же базы данных, и с помощью утилиты
Enterprise Manager произвести мониторинг текущих блокировок сервера, используя следующие
его папки:
Management/Current Activity/Process Info – папка с подробной информацией обо всех
процессах, которые в текущий момент обращаются к серверу;
Management/Current Activity/Locks/Process ID – папка с информацией о текущих
блокировках, которые установлены процессами;
Management/Current Activity/Locks/Object – папка с информацией об объектах, которые
блокированы в текущий момент процессами.
Поскольку за время просмотра состояние блокировок процессов изменяется, следует
обновлять информацию с помощью команды Refresh контекстного меню процесса. В этом окне
можно посмотреть последнюю выполненную команду, послать сообщение пользователю и
уничтожить процесс, который вызвал мертвые блокировки.
В папке Process Info содержится следующая информация:
Process ID – идентификационный номер процесса;
User – имя учетной записи пользователя;
Database – имя используемой процессом базы данных;
Status – состояние процесса: работает в основном режиме (Runable), работает в фоновом
режиме (Background) или бездействует (Sleeping);
Open Transaction – количество транзакций, открытых процессов;
Command – последняя выполненная команда;
Application – имя приложения, установившего соединение;
Wait time – время ожидания разблокирования ресурса;
Wait type – тип ожидания разблокирования ресурса;
Wait resource – имя ожидаемого ресурса;
CPU time – время работы процесса;
Physical ID – физический идентификатор процесса;
Memory Usage – объем памяти, занятой процессом;
Login time – время регистрации процесса;
Last Batch – время выполнения процессом последней команды;
Host – имя компьютера, на котором был запущен процесс;
Network Library – имя сетевой
библиотеки соединения с процессом;
Network Address – адрес сетевой карты, которую использовал процесс для установления
соединения;
Blocked by – количество процессов, блокируемых данным процессом;
Blocking – количество процессов, блокирующих выполнение данного процесса.
тупиковые (deadlocks) блокировки. Для избежания подобных проблем имеется специальный
механизм разрешения конфликтов тупикового блокирования. Кроме того для минимизации
возможности их образования необходимо соблюдать ряд правил при разработке кода транзакции:
минимизировать длительность транзакции, использовать низкий уровень изоляции, избегать в
транзакции взаимодействия с пользователем и т.д.
В командах SELECT, DELETE, UPDATE и INSERT можно с помощью специальных
ключевых слов, или хинтов (hint) управлять блокировками и уровнем изоляции:
HOLDLOCK – для удержания коллективной блокировки до конца транзакции;
NOLOCK – разрешает грязное чтение;
PAGLOCK – блокировка на уровне страницы;
READCOMMITTED – установка первого уровня изоляции;
ROWLOCK – блокировка на уровне строки;
SERIALIZABLE – установка высшего уровня изоляции;
TABLOCK – блокировка на уровне таблицы;
TABLOCKX – блокировка на уровне таблицы до завершения транзакции.
Имеются и другие хинты.
Задание 1. Создать несколько одновременно работающих процессов, соединенным с
одним и тем же сервером и использующих одни и те же базы данных, и с помощью утилиты
Enterprise Manager произвести мониторинг текущих блокировок сервера, используя следующие
его папки:
Management/Current Activity/Process Info – папка с подробной информацией обо всех
процессах, которые в текущий момент обращаются к серверу;
Management/Current Activity/Locks/Process ID – папка с информацией о текущих
блокировках, которые установлены процессами;
Management/Current Activity/Locks/Object – папка с информацией об объектах, которые
блокированы в текущий момент процессами.
Поскольку за время просмотра состояние блокировок процессов изменяется, следует
обновлять информацию с помощью команды Refresh контекстного меню процесса. В этом окне
можно посмотреть последнюю выполненную команду, послать сообщение пользователю и
уничтожить процесс, который вызвал мертвые блокировки.
В папке Process Info содержится следующая информация:
Process ID – идентификационный номер процесса;
User – имя учетной записи пользователя;
Database – имя используемой процессом базы данных;
Status – состояние процесса: работает в основном режиме (Runable), работает в фоновом
режиме (Background) или бездействует (Sleeping);
Open Transaction – количество транзакций, открытых процессов;
Command – последняя выполненная команда;
Application – имя приложения, установившего соединение;
Wait time – время ожидания разблокирования ресурса;
Wait type – тип ожидания разблокирования ресурса;
Wait resource – имя ожидаемого ресурса;
CPU time – время работы процесса;
Physical ID – физический идентификатор процесса;
Memory Usage – объем памяти, занятой процессом;
Login time – время регистрации процесса;
Last Batch – время выполнения процессом последней команды;
Host – имя компьютера, на котором был запущен процесс;
Network Library – имя сетевой библиотеки соединения с процессом;
Network Address – адрес сетевой карты, которую использовал процесс для установления
соединения;
Blocked by – количество процессов, блокируемых данным процессом;
Blocking – количество процессов, блокирующих выполнение данного процесса.
Страницы
- « первая
- ‹ предыдущая
- …
- 60
- 61
- 62
- 63
- 64
- …
- следующая ›
- последняя »
