Перегляд інформації про процеси. Відстежування блокувань по ідентифікатору процесу і імені об'єкту. .
Самостійна робота
План лекції
Тема 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 | Имя заблокированного объекта |