首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DMV查询作为Perfmon计数器

DMV查询作为Perfmon计数器
EN

Database Administration用户
提问于 2011-03-28 19:07:45
回答 2查看 1.1K关注 0票数 5

某些DMV查询返回自引导以来递增的各种统计信息,作为perfmon计数器非常有用。

例如,以以下为例:

代码语言:javascript
复制
SELECT wait_type, wait_time_ms FROM sys.dm_os_wait_stats;

大多数监视工具都知道如何获取递增数字并将其转换为速率,因为SNMP计数器就是这样工作的。有人知道以前有什么工具可以将这类状态转化为DMV查询吗?

EN

回答 2

Database Administration用户

发布于 2011-03-29 12:31:29

这并不能完全回答你的问题,但Paul在去年12月的一项调查中提供了一个非常有用的查询,用于汇总等待统计数据。我已经无耻地复制和粘贴在这里,但我提供了一个链接到他的网站,因为有丰富的知识可以从它。等待统计

代码语言:javascript
复制
WITH Waits AS
    (SELECT
        wait_type,
        wait_time_ms / 1000.0 AS WaitS,
        (wait_time_ms - signal_wait_time_ms) / 1000.0 AS ResourceS,
        signal_wait_time_ms / 1000.0 AS SignalS,
        waiting_tasks_count AS WaitCount,
        100.0 * wait_time_ms / SUM (wait_time_ms) OVER() AS Percentage,
        ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS RowNum
    FROM sys.dm_os_wait_stats
    WHERE wait_type NOT IN (
        'CLR_SEMAPHORE', 'LAZYWRITER_SLEEP', 'RESOURCE_QUEUE', 'SLEEP_TASK',
        'SLEEP_SYSTEMTASK', 'SQLTRACE_BUFFER_FLUSH', 'WAITFOR', 'LOGMGR_QUEUE',
        'CHECKPOINT_QUEUE', 'REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'BROKER_TO_FLUSH',
        'BROKER_TASK_STOP', 'CLR_MANUAL_EVENT', 'CLR_AUTO_EVENT', 'DISPATCHER_QUEUE_SEMAPHORE',
        'FT_IFTS_SCHEDULER_IDLE_WAIT', 'XE_DISPATCHER_WAIT', 'XE_DISPATCHER_JOIN', 'BROKER_EVENTHANDLER',
        'TRACEWRITE', 'FT_IFTSHC_MUTEX', 'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
        'BROKER_RECEIVE_WAITFOR', 'ONDEMAND_TASK_QUEUE', 'DBMIRROR_EVENTS_QUEUE',
        'DBMIRRORING_CMD', 'BROKER_TRANSMITTER', 'SQLTRACE_WAIT_ENTRIES',
        'SLEEP_BPOOL_FLUSH', 'SQLTRACE_LOCK')
    )
SELECT
    W1.wait_type AS WaitType,
    CAST (W1.WaitS AS DECIMAL(14, 2)) AS Wait_S,
    CAST (W1.ResourceS AS DECIMAL(14, 2)) AS Resource_S,
    CAST (W1.SignalS AS DECIMAL(14, 2)) AS Signal_S,
    W1.WaitCount AS WaitCount,
    CAST (W1.Percentage AS DECIMAL(4, 2)) AS Percentage,
    CAST ((W1.WaitS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgWait_S,
    CAST ((W1.ResourceS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgRes_S,
    CAST ((W1.SignalS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgSig_S
FROM Waits AS W1
    INNER JOIN Waits AS W2 ON W2.RowNum <= W1.RowNum
GROUP BY W1.RowNum, W1.wait_type, W1.WaitS, W1.ResourceS, W1.SignalS, W1.WaitCount, W1.Percentage
HAVING SUM (W2.Percentage) - W1.Percentage < 95; -- percentage threshold
GO
票数 3
EN

Database Administration用户

发布于 2011-03-28 19:30:07

我不确定这是否是您的意思,但是DbVisualizer在图形中显示这种数据做得很好。寻找监视功能。所做的是从网格中的查询中收集数据,您可以将网格显示为一个图形。在网格中,您可以对以前的单元格进行寻址,并使用它们计算差异。这样做可以让你显示时差和增量,有效地给出一个比率。它具有多平台、多数据库的特点。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/1945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档