zoukankan      html  css  js  c++  java
  • SqlServer查看表、存储过程、耗时查询、当前进程、开销较大的语句

    --查看数据库中表的语句
    SELECT  s2.dbid ,
             DB_NAME(s2.dbid) AS [数据库名] ,
             --s1.sql_handle ,
             ( SELECT TOP 1
                         SUBSTRING(s2.text, statement_start_offset / 2 + 1,
                                   ( ( CASE WHEN statement_end_offset = -1
                                            THEN ( LEN(CONVERT(NVARCHAR(MAX), s2.text))
                                                   * 2 )
                                            ELSE statement_end_offset
                                       END ) - statement_start_offset ) / 2 + 1)
             ) AS [语句] ,
             execution_count AS [执行次数] ,
             last_execution_time AS [上次开始执行计划的时间] ,
             total_worker_time AS [自编译以来执行所用的 CPU 时间总量(微秒)] ,
             last_worker_time AS [上次执行计划所用的 CPU 时间(微秒)] ,
             min_worker_time AS [单次执行期间曾占用的最小 CPU 时间(微秒)] ,
             max_worker_time AS [单次执行期间曾占用的最大 CPU 时间(微秒)] ,
             total_logical_reads AS [总逻辑读] ,
             last_logical_reads AS [上次逻辑读] ,
             min_logical_reads AS [最少逻辑读] ,
             max_logical_reads AS [最大逻辑读] ,
             total_logical_writes AS [总逻辑写] ,
             last_logical_writes AS [上次逻辑写] ,
             min_logical_writes AS [最小逻辑写] ,
             max_logical_writes AS [最大逻辑写]
     FROM    sys.dm_exec_query_stats AS s1
             CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
     WHERE   s2.objectid IS NULL
     ORDER BY last_worker_time DESC
    
    
     --查看存储过程执行的语句
      SELECT
                DB_NAME(ISNULL(EPS.database_id,‘‘)) [数据库名称]
           --ISNULL(DBS.name, ‘‘) AS DatabaseName 
           ,OBJECT_NAME(EPS.object_id, EPS.database_id) [存储过程名称] --AS ObjectName 
           ,EPS.cached_time [添加到缓存的时间]--AS CachedTime 
           ,EPS.last_elapsed_time  ‘最近执行所耗费时间(微秒)‘--AS LastElapsedTime
           ,EPS.last_worker_time ‘上次执行存储过程所用的CPU时间(微秒)‘
           ,EPS.execution_count [上次编译以来所执行的次数]--AS ExecutionCount 
           ,EPS.total_worker_time / EPS.execution_count [平均每次执行所用的CPU时间总量(微秒)]--AS AvgWorkerTime 
           ,EPS.total_elapsed_time / EPS.execution_count [平均每次执行所用的时间(微秒)]--AS AvgElapsedTime 
           ,(EPS.total_logical_reads + EPS.total_logical_writes) 
            / EPS.execution_count AS AvgLogicalIO
           ,b.text [存储过程内容] 
     FROM sys.dm_exec_procedure_stats AS EPS
     CROSS APPLY sys.dm_exec_sql_text(EPS.sql_handle) b
     ORDER BY EPS.last_elapsed_time DESC;   
    
     --展示耗时的查询
     DECLARE @MinExecutions int; 
     SET @MinExecutions = 5 
       
     SELECT EQS.total_worker_time AS TotalWorkerTime 
           ,EQS.total_logical_reads + EQS.total_logical_writes AS TotalLogicalIO 
           ,EQS.execution_count As ExeCnt 
           ,EQS.last_execution_time AS LastUsage 
           ,EQS.total_worker_time / EQS.execution_count as AvgCPUTimeMiS 
           ,(EQS.total_logical_reads + EQS.total_logical_writes) / EQS.execution_count  
            AS AvgLogicalIO 
           ,DB.name AS DatabaseName 
           ,SUBSTRING(EST.text 
                     ,1 + EQS.statement_start_offset / 2 
                     ,(CASE WHEN EQS.statement_end_offset = -1  
                            THEN LEN(convert(nvarchar(max), EST.text)) * 2  
                            ELSE EQS.statement_end_offset END  
                      - EQS.statement_start_offset) / 2 
                     ) AS SqlStatement 
           -- Optional with Query plan; remove comment to show, but then the query takes !!much longer time!! 
           --,EQP.[query_plan] AS [QueryPlan] 
     FROM sys.dm_exec_query_stats AS EQS 
          CROSS APPLY sys.dm_exec_sql_text(EQS.sql_handle) AS EST 
          CROSS APPLY sys.dm_exec_query_plan(EQS.plan_handle) AS EQP 
          LEFT JOIN sys.databases AS DB 
              ON EST.dbid = DB.database_id      
     WHERE EQS.execution_count > @MinExecutions 
           AND EQS.last_execution_time > DATEDIFF(MONTH, -1, GETDATE()) 
     ORDER BY AvgLogicalIo DESC,AvgCPUTimeMiS DESC
    
    
     --当前进程及其语句:
    SELECT PRO.loginame AS LoginName 
           ,DB.name AS DatabaseName 
           ,PRO.[status] as ProcessStatus 
           ,PRO.cmd AS Command 
           ,PRO.last_batch AS LastBatch 
           ,PRO.cpu AS Cpu 
           ,PRO.physical_io AS PhysicalIo 
           ,SES.row_count AS [RowCount] 
           ,STM.[text] AS SQLStatement 
     FROM sys.sysprocesses AS PRO 
          INNER JOIN sys.databases AS DB 
              ON PRO.dbid = DB.database_id 
          INNER JOIN sys.dm_exec_sessions AS SES 
             ON PRO.spid = SES.session_id 
          CROSS APPLY sys.dm_exec_sql_text(PRO.sql_handle) AS STM      
     WHERE PRO.spid >= 50  -- Exclude system processes 
     ORDER BY PRO.physical_io DESC ,PRO.cpu DESC;
    
     --5、开销较大的查询:
     SELECT  ss.SUM_execution_count ,
             t.text ,
             ss.SUM_total_elapsed_time ,
             ss.sum_total_worker_time ,
             ss.sum_total_logical_reads ,
             ss.sum_total_logical_writes
     FROM    ( SELECT    S.plan_handle ,
                         SUM(s.execution_count) SUM_Execution_count ,
                         SUM(s.total_elapsed_time) SUM_total_elapsed_time ,
                         SUM(s.total_worker_time) SUM_total_worker_time ,
                         SUM(s.total_logical_reads) SUM_total_logical_reads ,
                         SUM(s.total_logical_writes) SUM_total_logical_writes
               FROM      sys.dm_exec_query_stats s
               GROUP BY  S.plan_handle
             ) AS ss
             CROSS APPLY sys.dm_exec_sql_text(ss.plan_handle) t
     ORDER BY sum_total_logical_reads DESC 
  • 相关阅读:
    windows的80端口被占用时的处理方法
    Ansible自动化运维工具安装与使用实例
    Tomcat的测试网页换成自己项目首页
    LeetCode 219. Contains Duplicate II
    LeetCode Contest 177
    LeetCode 217. Contains Duplicate
    LeetCode 216. Combination Sum III(DFS)
    LeetCode 215. Kth Largest Element in an Array(排序)
    Contest 176 LeetCode 1354. Construct Target Array With Multiple Sums(优先队列,递推)
    Contest 176
  • 原文地址:https://www.cnblogs.com/chenqingbin/p/11065516.html
Copyright © 2011-2022 走看看