SqlServerパフォーマンステストのためのSqlステートメントのトラブルシューティング

        多くの場合、SQLステートメントを使用してデータをクエリすると、SQLステートメントのパフォーマンスの考慮を見逃すことは避けられないため、SqlServerサービスの過度の使用の問題が発生することがあります。問題の原因となっているSQLステートメントを大まかにトラブルシューティングするために、合格することができます。次のSQLクエリは、最近最も時間のかかるSQLステートメントをすべて示しています。具体的なクエリSQLステートメントは次のとおりです。

SELECT s2.dbid,
       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 执行SQL,
       last_worker_time '最后执行总耗时(毫秒)',
       last_execution_time '最后执行时间',
       total_worker_time '所有执行总耗时(毫秒)',
       min_worker_time '执行最小耗时(毫秒)',
       max_worker_time '执行最大耗时(毫秒)',
       execution_count,
       plan_generation_num,
       total_physical_reads,
       last_physical_reads,
       min_physical_reads,
       max_physical_reads,
       total_logical_writes,
       last_logical_writes,
       min_logical_writes,
       max_logical_writes
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,
         s1.sql_handle,
         s1.statement_start_offset,
         s1.statement_end_offset;

実行効果:

おすすめ

転載: blog.csdn.net/qubernet/article/details/107376630