• [转] 监控 SQL Server (2005/2008) 的运行状况来自微软TetchNet


    原文地址:
    http://technet.microsoft.com/zh-cn/library/bb838723.aspx

    Microsoft SQL Server 2005 提供了一些工具来监控数据库。方法之一是动态管理视图。动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的运行状况、诊断问题和优化性能。

    常规服务器动态管理对象包括:

    dm_db_*:数据库和数据库对象

    dm_exec_*:执行用户代码和关联的连接

    dm_os_*:内存、锁定和时间安排

    dm_tran_*:事务和隔离

    dm_io_*:网络和磁盘的输入/输出

    此部分介绍为监控 SQL Server 运行状况而针对这些动态管理视图和函数运行的一些常用查询。


    摘录部分精彩SQL如下:

    下面的查询显示 CPU 平均占用率最高的前 50 个 SQL 语句。

    view plaincopy to clipboardprint?
    SELECT TOP 50  
    total_worker_time/execution_count AS [Avg CPU Time],  
    (SELECT SUBSTRING(text,statement_start_offset/2,(CASE WHEN statement_end_offset = -1 then LEN(CONVERT(nvarchar(max), text)) * 2 ELSE statement_end_offset end -statement_start_offset)/2) FROM sys.dm_exec_sql_text(sql_handle)) AS query_text, *  
    FROM sys.dm_exec_query_stats   
    ORDER BY [Avg CPU Time] DESC 
    SELECT TOP 50
    total_worker_time/execution_count AS [Avg CPU Time],
    (SELECT SUBSTRING(text,statement_start_offset/2,(CASE WHEN statement_end_offset = -1 then LEN(CONVERT(nvarchar(max), text)) * 2 ELSE statement_end_offset end -statement_start_offset)/2) FROM sys.dm_exec_sql_text(sql_handle)) AS query_text, *
    FROM sys.dm_exec_query_stats
    ORDER BY [Avg CPU Time] DESC

    下面的查询显示一些可能占用大量 CPU 使用率的运算符(例如 ‘%Hash Match%’、‘%Sort%’)以找出可疑对象。

    view plaincopy to clipboardprint?
    select   *  
    from    
          sys.dm_exec_cached_plans  
           cross  apply sys.dm_exec_query_plan(plan_handle)  
    where    
           cast (query_plan  as   nvarchar ( max ))  like   ' %Sort% ' 
           or   cast (query_plan  as   nvarchar ( max ))  like   ' %Hash Match% ' 
    select   *
    from 
          sys.dm_exec_cached_plans
           cross  apply sys.dm_exec_query_plan(plan_handle)
    where 
           cast (query_plan  as   nvarchar ( max ))  like   ' %Sort% '
           or   cast (query_plan  as   nvarchar ( max ))  like   ' %Hash Match% '

    运行下面的 DMV 查询以查看 CPU、计划程序内存和缓冲池信息。

    view plaincopy to clipboardprint?
    select    
    cpu_count,  
    hyperthread_ratio,  
    scheduler_count,  
    physical_memory_in_bytes  /   1024   /   1024   as  physical_memory_mb,  
    virtual_memory_in_bytes  /   1024   /   1024   as  virtual_memory_mb,  
    bpool_committed  *   8   /   1024   as  bpool_committed_mb,  
    bpool_commit_target  *   8   /   1024   as  bpool_target_mb,  
    bpool_visible  *   8   /   1024   as  bpool_visible_mb  
    from  sys.dm_os_sys_info 
    select 
    cpu_count,
    hyperthread_ratio,
    scheduler_count,
    physical_memory_in_bytes  /   1024   /   1024   as  physical_memory_mb,
    virtual_memory_in_bytes  /   1024   /   1024   as  virtual_memory_mb,
    bpool_committed  *   8   /   1024   as  bpool_committed_mb,
    bpool_commit_target  *   8   /   1024   as  bpool_target_mb,
    bpool_visible  *   8   /   1024   as  bpool_visible_mb
    from  sys.dm_os_sys_info

    下面的示例查询显示已重新编译的前 25 个存储过程。plan_generation_num 指示该查询已重新编译的次数。

    view plaincopy to clipboardprint?
    select   top   25 
    sql_text. text ,  
    sql_handle,  
    plan_generation_num,  
    execution_count,  
    dbid,  
    objectid   
    from  sys.dm_exec_query_stats a  
    cross  apply sys.dm_exec_sql_text(sql_handle)  as  sql_text  
    where  plan_generation_num  >   1 
    order   by  plan_generation_num  desc 
    select   top   25
    sql_text. text ,
    sql_handle,
    plan_generation_num,
    execution_count,
    dbid,
    objectid
    from  sys.dm_exec_query_stats a
    cross  apply sys.dm_exec_sql_text(sql_handle)  as  sql_text
    where  plan_generation_num  >   1
    order   by  plan_generation_num  desc

    下面的 DMV 查询可用于查找哪些批处理/请求生成的 I/O 最多。如下所示的 DMV 查询可用于查找可生成最多 I/O 的前五个请求。调整这些查询将提高系统性能。

    view plaincopy to clipboardprint?
    select   top   5    
        (total_logical_reads / execution_count)  as  avg_logical_reads,  
        (total_logical_writes / execution_count)  as  avg_logical_writes,  
        (total_physical_reads / execution_count)  as  avg_phys_reads,  
         Execution_count,   
        statement_start_offset  as  stmt_start_offset,   
        sql_handle,   
        plan_handle  
    from  sys.dm_exec_query_stats    
    order   by   (total_logical_reads  +  total_logical_writes)  Desc 
    select   top   5 
        (total_logical_reads / execution_count)  as  avg_logical_reads,
        (total_logical_writes / execution_count)  as  avg_logical_writes,
        (total_physical_reads / execution_count)  as  avg_phys_reads,
         Execution_count,
        statement_start_offset  as  stmt_start_offset,
        sql_handle,
        plan_handle
    from  sys.dm_exec_query_stats 
    order   by   (total_logical_reads  +  total_logical_writes)  Desc

    ……………………………………

     

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    JavaScript中的String对象
    JavaScript中String对象处理HTML标记中文本的方法
    JavaScript中的Array对象
    JavaScript对象基础知识
    开机后显示显示‘无信号’
    JavsScript的基本特点
    ASP.NET中默认的一级目录
    MVC每层的职责
    PHP sql注入漏洞修复(数字型)
    python self的含义
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1556303.html
Copyright © 2020-2023  润新知