SQLServerのSQL仕上げ共通運用および保守(ターン)

転載アドレスします。https://www.cnblogs.com/tianqing/p/11152799.html

今日のオンラインCPUのSQLServerデータベースは、緊急事態に、オフフック鳴っている、それは、接続プロファイルを遮断するデータベースを分析し、最もCPUに負荷をかけTOP10 SQL、並列処理の設定、SQLクエリの理由の再コンパイルのSQLクエリ度など

我々はいくつかの一般的なSQLをコンパイル

1.クエリデータベースのブロック

1
SELECT  FROM   sys.sysprocesses  WHERE  blocked<>0  

クエリ結果は、まずサイクル閉塞ルートSIDの根本原因を特定するために、ほとんどのSIDを見つける、この列ブロックされたフォーカスを参照してください

SQLクエリセッションの根本的な原因をブロック

1
DBCC Inputbuffer(sid)

2.クエリのSQL接続の配布

1
SELECT  Hostname  FROM   sys.sysprocesses  WHERE  hostname<> ''

接続見る「TestDB2」データベースに接続している1、

MASTER.DBO.SYSPROCESSESから選択*
ここでDBID = DB_ID( 'TestDB2')

 

*データベースのユーザー接続を照会

sp_whoの 'SA'

図2は、データベースが最大接続を可能に表示します

@@ MAX_CONNECTIONSを選択

接続の最後の開始以来、3ビューデータベース

SELECT @@ CONNECTIONS

 図4に示すように、接続を閉じます

上記のクエリは、SPIDすることができ、SPIDに従って、プロセスをシャットダウンします。

54を殺します

 

 

 

 

 

3.クエリのSQLのTop10最もCPU集約型

1
2
3
select  top (10) st.text  as  Query, qs.total_worker_time, qs.execution_count  from
sys.dm_exec_query_stats  as  qs  CROSS  Apply sys.dm_exec_sql_text(qs.sql_handle)  AS  st
order  by  qs.total_worker_time  desc

4.参照の並列処理のSQLServer

1
SELECT  value_in_use   FROM  sys.configurations  WHERE  name  'max degree of parallelism'

並列度は、並列プランの生成を抑制するために、1に設定されている場合は、並列処理の最大限度を1に設定します

並列コンパイラは1にSQLの実行計画、並列処理の最大の度合いを生成し、防ぐことができます

:ポリシーを設定し、具体的な設定方法は、以下を参照してください。https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-max-degree-of-parallelism-server-configuration-オプション?ビュー= SQL-サーバ- 2017

1
2
3
4
5
6
7
8
9
10
USE DatabaseName ; 
GO  
EXEC  sp_configure  'show advanced options' , 1; 
GO 
RECONFIGURE  WITH  OVERRIDE; 
GO 
EXEC  sp_configure  'max degree of parallelism' , 16; 
GO 
RECONFIGURE  WITH  OVERRIDE; 
GO

  

5.查询SQL Serverの再コンパイルの理由

1
2
select  dxmv. name , dxmv.map_key,dxmv.map_value  from
sys.dm_xe_map_values  as  dxmv  where  dxmv. name = 'statement_recompile_cause'  order  by  dxmv.map_key

テーブルへ6. SQLトレースファイル、実行する集計分析(CPU、IO、実行時間など)

1
2
3
SELECT  INTO  TabSQL
FROM  fn_trace_gettable( 'C:\Users\***\Desktop\Trace\sql05trace20180606-业务.trc' default );
GO

上記の表のデータ分析を重合最も時間のかかるSQL

1
2
3
4
5
6
7
8
9
10
11
12
select   top  100    
         replace ( replace ( replace (   substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' )   as  '名称' ,
         --substring(Textdata,1,6600)  as old,
        count (*)  as  '数量' ,
        sum (duration/1000)  as  '总执行时间ms' ,
        avg (duration/1000)  as  '平均执行时间ms' ,
        avg (cpu)  as  '平均CPU时间ms' ,
        avg (reads)  as  '平均读次数' ,
        avg (writes)  as  '平均写次数' , LoginName
from  TabSQL   t
group  by    replace ( replace ( replace (   substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' ) , LoginName
order  by  sum (duration)  desc

IO SQLの消費のほとんどは

1
2
3
4
5
6
7
8
9
10
11
12
select   TOP  100  replace ( replace ( replace (   substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' as  '名称'  ,LoginName,
        count (*)  as  '数量' ,
        sum (duration/1000)  as  '总执行时间ms' ,
        avg (duration/1000)  as  '平均执行时间ms' ,
        sum (cpu)  as  '总CPU时间ms' ,
        avg (cpu)  as  '平均CPU时间ms' ,
        sum (reads)  as  '总读次数' ,
        avg (reads)  as  '平均读次数' ,
        avg (writes)  as  '平均写次数'
from  TabSQL
group  by  replace ( replace ( replace (   substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' )  ,LoginName
order  by   sum (reads)  desc

最もCPU集中型SQL

1
2
3
4
5
6
7
8
9
10
11
SELECT  TOP  100  replace ( replace ( replace (   substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' )   as  '名称' ,LoginName,
        count (*)  as  '数量' ,
        sum (duration/1000)  as  '总执行时间ms' ,
        avg (duration/1000)  as  '平均执行时间ms' ,
        sum (cpu)  as  '总CPU时间' ,
        avg (cpu)  as  '平均CPU时间' ,
        avg (reads)  as  '平均读次数' ,
        avg (writes)  as  '平均写次数'
from  TabSQL
group  by  replace ( replace ( replace (   substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' )   ,LoginName
order  by  avg (cpu)  desc

 

おすすめ

転載: www.cnblogs.com/yxlblogs/p/11627271.html