SQL Server のチューニングについてまとめてみる - その19 - ( プランがちゃんと再利用されているか確認してみる )
クエリチューニングにおいてインデックスが使われていることに着目することが多いですが、他の重要なことに "プランの再利用" があります。プランの再利用率が悪いと SQL のコンパイルが頻繁に実行されてしまい、その結果 CPU 使用率が高くなってしまいます。私の経験ではコンパイルに要した時間は最高で35秒です。DB サーバの負荷が異常に上がってしまい、変な汗をかいた記憶がありますwww 下記の記事で少し触れています。
ryuchan.hatenablog.com
さて、クエリの再利用率ですが sys.dm_os_performance_counters を使用します。( カウンターは、Batch Requests/sec と SQL Compilations/sec を使用します。 )
SQL Server: SQL Statistics オブジェクト
- Batch Requests/sec
1 秒あたりに受信した Transact-SQL コマンドのバッチの数。 この統計値はすべての制約の影響を受けます。制約とは、I/O、ユーザー数、キャッシュ サイズ、要求の複雑さなどです。 バッチ要求の数が多いことは、スループットが優れていることを意味します。- SQL Compilations/sec
1 秒あたりの SQL コンパイルの回数。 コンパイル コード パスが入力された回数を示します。 SQL Server のステートメントレベルの再コンパイルによって発生したコンパイル回数を含みます。 SQL Server のユーザー利用状況が安定化すると、この値は定常状態に到達します。
下記のクエリを SQL Server Management Studio で実行してみましょう。
SELECT [実行プランの再利用率] = CAST(((( batch_req.cntr_value * 1.00 - sql_comp.cntr_value * 1.00 ) / batch_req.cntr_value) * 100 ) AS DECIMAL(5,2)) FROM sys.dm_os_performance_counters batch_req, sys.dm_os_performance_counters sql_comp WHERE batch_req.counter_name='Batch Requests/sec' and sql_comp.counter_name='SQL Compilations/sec'
※これは、低すぎ!
パラメータ化などをきちんと使用して再利用率を向上させ、クエリをパフォーマンスアップさせましょう。
子供のためにポチった!
カワイ 電子ピアノ (プレミアムホワイトメープル調)KAWAI CN25-A
- 出版社/メーカー: 河合楽器
- メディア:
- この商品を含むブログを見る
ThinkPad X1 Carbon が欲しい!メモリは16Gで。
Yoga も捨てがたい....