Перегляд інформації про процеси. Відстежування блокувань по ідентифікатору процесу і імені об'єкту. .


Самостійна робота

План лекції

Тема 6. Управління активністю сервера

Лекція № 6

1. Перегляд інформації про процеси. Відстежування блокувань по ідентифікатору процесу і імені об'єкту. .

2. Виявлення і усунення тупикових блокувань і блокуючих з'єднань.

3. Відстежування виконання команд в SQL Server.

4. Припинення процесів сервера.

Зміст лекції

Просматривая информацию о процессах, можно получить детальные сведения об их состоянии, текущих пользовательских соединениях и другой активности сервера. Для этого выполните следующие действия.

1. Запустите SQL Server Management Studio и подключитесь к серверу.

2. В панели Object Explorer (Обозреватель объектов) раскройте узел сервера, а потом узел Management (Управление).

3. Под узлом Management (Управление) дважды щелкните мышью узел Activity Monitor (Монитор активности). Отобразится окно Activity Monitor (Монитор активности), содержащее сводную информацию об активности процессов (рис. 5-13).

Рис. 5-13. Окно Activity Monitor со сводной информацией о процессах

Совет По умолчанию информация о процессах не обновляется автоматически. Чтобы ее обновить, в панели инструментов окна Activity Monitor (Монитор активности) щелкните кнопку Refresh (Обновить). Для настройки автоматического обновления щелкните ссылку View refresh settings (Просмотреть параметры обновления) в разделе Status (Состояние).

В диалоговом окне Refresh Settings (Параметры обновления) установите флажок Autorefresh every (Автоматическое обновление каждые) и задайте в предоставленном поле время интервала обновления (в секундах). Щелкните кнопку OK.

По умолчанию процессы отсортированы по идентификатору, но их можно упорядочить и по другим доступным категориям информации, приведенным в табл. 5-2.

Чтобы отсортировать процессы по какой-либо категории, щелкните ее заголовок. При повторном щелчке процессы будут отсортированы в обратном порядке.

Табл. 5-2. Информация о процессах, используемая в администрировании БД

Категория Описание
Process ID Идентификатор процесса для текущего пользователя
System Process Системный процесс
User Пользователь, выполняющий процесс. Отображается учетная запись SQL Server или домена, в зависимости от используемого способа аутентификации
Database БД, с которой связан процесс
Status Состояние процесса. Обычные состояния: running (работающий), runnable (отработавший, но активный), sleeping (спящий) или background (фоновый). Работающий выполняет команду в данный момент; отработавший — успешно выполнил команду, но является активным и ожидает дальнейших действий; спящий — ожидает интерактивного ввода или разблокирования; фоновый — работает в фоновом режиме и периодически выполняет задачи
Open Transactions Количество открытых транзакций
Command Команда, выполняемая процессом в данный момент, или последняя выполненная
Application Приложение или компонент SQL Server, подключенные к серверу и выполняющие процесс, например Report Server (Сервер отчетов)
Wait Time Время ожидания разблокирования (мс)
Wait Type Тип последнего или текущего ожидания
Resource Ресурс, разблокирования которого ожидает процесс
CPU Количество используемого времени процессора (мс)
Physical I/O Количество физических операций дискового ввода-вывода, использованных процессом
Memory Usage Количество страниц в кэше процедур, назначенных процессу
Login Time Время установки соединения
Last Batch Время последнего выполнения команды
Host Узел, установивший соединение
Net Library Сетевая библиотека, используемая для соединения
Net Address Сетевой адрес соединения
Blocked by Идентификатор блокирующего процесса
Blocking Идентификатор процесса, заблокированного данным
Execution Context Контекст выполнения процесса

Отслеживание блокировок по идентификатору процесса и имени объекта

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

1. Запустите SQL Server Management Studio и подключитесь к серверу.

2. В панели Object Explorer (Обозреватель объектов) раскройте узел сервера, а потом узел Management (Управление).

3. Чтобы открыть окно Activity Monitor (Монитор активности), дважды щелкните мышью узел Activity Monitor (Монитор активности), находящийся под узлом Management (Управление).

4. Группируя информацию по процессу, можно просмотреть перечень всех объектов, заблокированных конкретным процессом. Для этого в списке Select a page (Выберите страницу) щелкните элемент Locks By Process (Блокировки по процессу), затем справа в раскрывающемся списке Selected process (Выбранный процесс) выберите идентификатор процесса, блокировки которого следует посмотреть, например 51.

5. Группировка информации по объекту даст возможность просмотреть список всех процессов, установивших блокировку на объекте. Для этого в списке Select a page (Выберите страницу) щелкните элемент Locks By Object (Блокировки по объекту), затем справа в раскрывающемся списке Selected object (Выбранный объект) выберите объект БД, который следует просмотреть, например (internal).

6. Статистика блокировок не обновляется автоматически, поэтому периодически нужно обновлять отображаемую информацию. Для этого в панели инструментов окна Activity Monitor (Монитор активности) щелкните кнопку Refresh (Обновить).

Хотя информация о блокировках, организованная по идентификатору процесса или имени объекта, выглядит несколько по-разному, на самом деле она практически идентична. В первом случае отображается список объектов, заблокированных процессом, в другом — список процессов, которые установили блокировки на объекте.

Можно еще просмотреть информацию о типе, статусе и режиме блокировки, ее владельце, а также о заблокированном ресурсе и индексе (если применимо). Доступная информация, относящаяся к блокировкам, приведена в табл. 5-3.

Табл. 5-3. Информация о блокировках, используемая в администрировании БД

Категория, тип Описание
Process ID Идентификатор процесса для текущего пользователя
Context Идентификатор потока, связанного с процессом
Batch ID Идентификатор пакета, связанного с процессом
Type Объект блокировки
RID Строка таблицы
KEY Диапазон ключей индекса
PAGE Страница данных или индекса
EXTENT Группа из восьми смежных страниц данных или индекса (экстент)
TABLE Вся таблица, включая индексы
DATABASE Вся БД
METADATA Метаданные объекта
Subtype Подтип блокировки. Часто используется при блокировке метаданных
Description Необязательная описательная информация
Request Mode Тип блокировки, устанавливаемой запросом
S Разделяемая (Shared). Используется для операций чтения, таких как инструкция select
U Обновления (Update). Используется при чтении для блокирования ресурса, который впоследствии может понадобиться обновить. Предотвращает некоторые ситуации, способные привести к тупиковым («мертвым») блокировкам
X Монопольная (Exclusive). Позволяет обновлять данные только одному соединению. Используется в операциях изменения данных, таких как INSERT, DELETE, и UPDATE
I Намерения (Intent). Используется при установке иерархии блокировок
Sch-S Неизменности схемы (Schema stability). Используется при просмотре схемы таблицы
Sch-M Изменения схемы (Schema modification). Используется при изменении схемы таблицы
BU Массивного обновления (Bulk update). Используется при массивном копировании данных в таблицы и заданном указании TABLOCK
RangeS_S Разделяемая блокировка диапазона ключей, разделяемая блокировка ресурса
RangeS_U Разделяемая блокировка диапазона ключей, блокировка обновления ресурса
RangeI_N Блокировка намерения для диапазона ключей без блокировки ресурса. Используется для проверки диапазона ключей перед вставкой нового ключа в индекс
RangeX_X Монопольная блокировка диапазона ключей и ресурса. Используется при обновлении ключа в диапазоне ключей
Request Type Тип объекта, задействованного в запросе
Request Status Состояние запроса
GRANT Блокировка была установлена
WAIT Ожидание освобождения ресурса, заблокированного другим процессом
CNVT Блокировка конвертируется (установленная блокировка ожидает получения более жесткого режима)
Owner Type Тип владельца
CURSOR Курсор
SESSION Сеанс пользовательского соединения
TRANSACTION Транзакция
SHARED_ TRANSACTION_ WORKSPACE Разделяемая часть рабочей области транзакции
EXCLUSIVE_ TRANSACTION_ WORKSPACE Монопольная часть рабочей области транзакции
Owner ID Идентификатор владельца, связанного с блокировкой
Owner GUID Глобальный уникальный идентификатор (GUID, globally unique identifier) владельца, связанного с блокировкой
Database БД, в которой установлена блокировка
Object Имя заблокированного объекта