zoukankan      html  css  js  c++  java
  • 查看慢查询语句

     
     

    SELECT top 10
    (total_elapsed_time / execution_count)/1000 N'平均时间ms'
    ,total_elapsed_time/1000/1000.0 N'总花费时间ms'
    ,total_worker_time/1000/1000.0 N'所用的CPU总时间ms'
    ,total_physical_reads N'物理读取总次数'
    ,total_logical_reads/execution_count N'每次逻辑读次数'
    ,total_logical_reads N'逻辑读取总次数'
    ,total_logical_writes N'逻辑写入总次数'
    ,execution_count N'执行次数'
    ,creation_time N'语句编译时间'
    ,last_execution_time N'上次执行时间'
    ,SUBSTRING(
    st.text,
    (qs.statement_start_offset/2) + 1,
    (
    (CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2
    ) + 1
    ) N'执行语句',db.name
    FROM sys.dm_exec_query_stats AS qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
    CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
    CROSS APPLY master..SYSDATABASES db
    WHERE
    SUBSTRING(
    st.text,
    (qs.statement_start_offset/2) + 1,
    (
    (CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2
    ) + 1
    ) not like '%fetch%' and qp.dbid=db.dbid
    AND execution_count >100
    ORDER BY total_elapsed_time / execution_count DESC;





















    SELECT TOP 20 [Total IO] = (qs.total_logical_reads + qs.total_logical_writes) , [Average IO] = (qs.total_logical_reads + qs.total_logical_writes) / qs.execution_count , qs.execution_count , SUBSTRING (qt.text,(qs.statement_start_offset/2) + 1, ((CASE WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS [Individual Query] , qt.text AS [Parent Query] , DB_NAME(qt.dbid) AS DatabaseName , qp.query_plan FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp ORDER BY [Average IO] DESC SELECT TOP 10 TEXT AS 'SQL Statement' ,last_execution_time AS 'Last Execution Time' ,(total_logical_reads + total_physical_reads + total_logical_writes) / execution_count AS [Average IO] ,(total_worker_time / execution_count) / 1000000.0 AS [Average CPU Time (sec)] ,(total_elapsed_time / execution_count) / 1000000.0 AS [Average Elapsed Time (sec)] ,execution_count AS "Execution Count" ,qp.query_plan AS "Query Plan" FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) st CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp ORDER BY total_elapsed_time / execution_count DESC SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1, ((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.TEXT) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1), qs.execution_count, qs.total_logical_reads, qs.last_logical_reads, qs.total_logical_writes, qs.last_logical_writes, qs.total_worker_time, qs.last_worker_time, qs.total_elapsed_time/1000000 total_elapsed_time_in_S, qs.last_elapsed_time/1000000 last_elapsed_time_in_S, qs.last_execution_time, qp.query_plan FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp ORDER BY qs.total_logical_reads DESC -- logical reads -- ORDER BY qs.total_logical_writes DESC -- logical writes -- ORDER BY qs.total_worker_time DESC -- CPU time

    ------------------------------------------------------------------

    --总耗时最长
    SELECT TOP 10
            total_worker_time / 1000 AS N'总消耗CPU 时间(ms)' ,
            execution_count N'运行次数' ,
            qs.total_worker_time / qs.execution_count / 1000 AS N'平均消耗CPU 时间(ms)' ,
            last_execution_time AS N'最后一次执行时间' ,
            max_worker_time / 1000 AS N'最大执行时间(ms)' ,
            SUBSTRING(qt.text, qs.statement_start_offset / 2 + 1,
                      ( CASE WHEN qs.statement_end_offset = -1
                             THEN DATALENGTH(qt.text)
                             ELSE qs.statement_end_offset
                        END - qs.statement_start_offset ) / 2 + 1) AS N'使用CPU的语法' ,
            qt.text N'完整语法'
    FROM    sys.dm_exec_query_stats qs WITH ( NOLOCK )
            CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
    WHERE   execution_count > 1
    ORDER BY max_worker_time DESC
    
    --平均耗时最长
    SELECT TOP 10
            ( total_elapsed_time / execution_count ) / 1000 N'平均时间ms' ,
            total_elapsed_time / 1000 N'总花费时间ms' ,
            total_worker_time / 1000 N'所用的CPU总时间ms' ,
            total_physical_reads N'物理读取总次数' ,
            total_logical_reads / execution_count N'每次逻辑读次数' ,
            total_logical_reads N'逻辑读取总次数' ,
            total_logical_writes N'逻辑写入总次数' ,
            execution_count N'执行次数' ,
            SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
                      ( ( CASE statement_end_offset
                            WHEN -1 THEN DATALENGTH(st.text)
                            ELSE qs.statement_end_offset
                          END - qs.statement_start_offset ) / 2 ) + 1) N'完整语法' ,
            creation_time N'语句编译时间' ,
            last_execution_time N'上次执行时间'
    FROM    sys.dm_exec_query_stats AS qs
            CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
    WHERE   SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
                      ( ( CASE statement_end_offset
                            WHEN -1 THEN DATALENGTH(st.text)
                            ELSE qs.statement_end_offset
                          END - qs.statement_start_offset ) / 2 ) + 1) NOT LIKE '%tch%'
    ORDER BY total_elapsed_time / execution_count DESC
    
    --物理读耗时最长
    SELECT TOP 10
            qs.total_physical_reads N'物理读取总次数' ,
            qs.execution_count N'执行次数' ,
            qs.total_physical_reads / qs.execution_count / 1000 AS N'平均时间ms' ,
    SUBSTRING(qt.text, ( qs.statement_start_offset / 2 ) + 1,
                      ( ( CASE statement_end_offset
                            WHEN -1 THEN DATALENGTH(qt.text)
                            ELSE qs.statement_end_offset
                          END - qs.statement_start_offset ) / 2 ) + 1) N'完整语法'
    FROM    sys.dm_exec_query_stats qs
            CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
    ORDER BY qs.total_physical_reads DESC  
    
    --逻辑读耗时最长
    SELECT TOP 10
            qs.total_logical_reads N'逻辑读取总次数' ,
            qs.execution_count N'执行次数' ,
            qs.total_logical_reads / qs.execution_count / 1000 AS N'平均时间ms' ,
           SUBSTRING(qt.text, ( qs.statement_start_offset / 2 ) + 1,
                      ( ( CASE statement_end_offset
                            WHEN -1 THEN DATALENGTH(qt.text)
                            ELSE qs.statement_end_offset
                          END - qs.statement_start_offset ) / 2 ) + 1) N'完整语法'
    FROM    sys.dm_exec_query_stats qs
            CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
    ORDER BY qs.total_logical_reads DESC   
  • 相关阅读:
    Nova官方资料入口处
    LeetCode 有效的数独
    LeetCode 两数之和
    LeetCode 移动零
    安装OpenStack Queens版本的教程推荐
    删除排序数组中的重复项
    (转载)OpenStack client 调用分析
    (转载)基于Linux C的socket抓包程序和Package分析
    Maven的具体使用和优点
    关于 Javascript 学习,有哪些好的博客或者网站推荐?
  • 原文地址:https://www.cnblogs.com/gered/p/9083880.html
Copyright © 2011-2022 走看看