Гаджеты на службе DBA

Практика показывает, что использование гаджетов (мини-приложений для боковой панели Windows Vista) для задач мониторинга производительности и работоспособности SQL Server оказывается очень удобным инструментом. Вся прелесть подобных мини-приложений в том, что они постоянно на виду или часто попадаются на глаза. Кроме того, чрезвычайная простота их разработки и установки делает их особенно привлекательными как для профессиональных разработчиков, так и для тех, кто не разрабатывает настольные приложения своими руками.
В интернете можно найти уже готовые мини-приложения, которые "заточены" под конкретные задачи и позволяют отслеживать только те ключевые показатели производительности или жизнедеятельности СУБД, которые были заложены в них на этапе разработки. К таким относится Conchango SQL Server Monitor Gadget v1.0.001 for Windows Vista Sidebar

Заслуживают внимания решения для мини-приложений, на подобие того, которое предлагает PowerGadgets. Эта компания разработала инструментарий для создания пользовательских гаджетов, причём, не нужно для этого владеть языками программирования высокого уровня, достаточно знать T-SQL.
Например, таким образом можно отслеживать счётчик производительности "Buffer cache hit ratio" и представлять его значения в виде стрелочного индикатора.
Запрос может иметь следующий вид:

    SELECT [Buffer cache hit ratio] = (SELECT CAST(cntr_value * 100 AS money) FROM master.dbo.sysperfinfo where object_name = 'SQLServer:Buffer Manager' AND counter_name = 'Buffer cache hit ratio') /(SELECT CAST(cntr_value AS money) FROM master.dbo.sysperfinfo where object_name = 'SQLServer:Buffer Manager' AND counter_name = 'Buffer cache hit ratio base')

Индикатор удобно выбрать такой:

Недавно, мне понадобилось отслеживать производительность одной пользовательской хранимой процедуры, которая является основным звеном технологической цепочки приложения и весьма чувствительна к изменениям среды её окружения и утилизации ресурсов. Для наблюдения тоже оказалось очень удобным использовать мини-приложение, которое я сделал "на коленках" очень быстро, и помог мне как раз инструментарий PowerGadgets.
Для отслеживания статистики работы процедуры я использовал запрос к административным динамическим представлениям, вот он:

    SELECT CAST(SUM(sub.avg_elapsed_time_sec) AS money) AS avg_elapsed_time_sec FROM (SELECT TOP 100 PERCENT (st.total_elapsed_time * 1.0 /100000)/st.execution_count AS avg_elapsed_time_sec FROM master.sys.dm_exec_cached_plans AS c CROSS APPLY master.sys.dm_exec_query_plan (c.plan_handle) AS q INNER JOIN master.sys.dm_exec_query_stats AS st ON c.plan_handle = st.plan_handle CROSS APPLY master.sys.dm_exec_sql_text(sql_handle) AS s WHERE c.cacheobjtype = 'Compiled Plan' AND c.objtype = 'Proc' AND q.dbid = DB_ID('ИМЯВАШЕЙБАЗЫ') AND OBJECT_NAME(s.objectid,s.dbid) = 'ИМЯПРОЦЕДУРЫ' ORDER BY SUBSTRING (s.text, st.statement_start_offset/2, (CASE WHEN st.statement_end_offset = -1 THEN LEN(CAST(s.text AS nvarchar(MAX))) * 2 ELSE st.statement_end_offset END - st.statement_start_offset )/2 ) ) sub

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

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

Published Thu, Sep 20 2007 8:48 by gladchenko
Filed under:

Comments

# Гаджеты на службе DBA

Практика показывает, что использование гаджетов (мини-приложений для боковой панели Windows Vista) для задач мониторинга производительности и работоспособности SQL Server оказывается очень удобным инструментом. Вся прелесть подобных мини-приложений в

Tuesday, October 23, 2007 12:03 PM by imported

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: