狠狠撸

狠狠撸Share a Scribd company logo
SQL Server パフォーマンス問題対処 Deep Dive
2
SQL Server
25%
SQL Database
15%
HDInsight
15%
Power BI
30%
Microsoft Azure
その他
15%
3
4
5
6
1. パフォーマンス ボトルネック特定手順
2. パフォーマンス問題対処を支えるツールセット
3. インサイド SQL Server パフォーマンス
4. まとめ
7
8
1) ボトルネックを特定するための情報を採取する
2) インスタンス全体でのボトルネックを特定する
3) ボトルネック原因に繋がる問題クエリーを特定する
(*) 本セッションの説明範囲?説明順序
9
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
待機種類ごとの待機時間(秒)
左図の例の場合、
SQL Server 全体の
ボトルネックは
PAGEIOLATCH_EX
10
11
待機種類 待機時間 (秒) 待機の原因
PAGEIOLATCH_EX 4,506 ディスク IO
SOS_SCHEDULER_YIELD 3,200 スレッド割り当て
WRITELOG 866 トランザクションログのフラッシュ
LATCH_EX 451 非ページ排他ラッチ
LCK_M_U 380 更新ロック
LCK_M_X 220 排他ロック
??? ???
12
待機種類 待機の原因に繋がっているリソース
SOS_SCHEDULER_YIELD CPU
RESOURCE_SEMAPHORE メモリー
PAGEIOLATCH_EX, _SH ディスク IO (データファイル配置ドライブ)
WRITELOG ディスク 書き込み (トランザクションログ配置ドライブ)
ASYNC_NETWORK_IO ネットワーク (クライアント応答)
LCK_M_X, _S, _U ロック (クエリー間のブロッキング)
PAGELATCH_EX, _SH, _UP SQL Server 管理ページ (ページ ラッチ)
LATCH_EX, _SH, _UP SQL Server プロセス内のメモリー (非ページ ラッチ)
13
PAGEIOLATCH_EX
= 4200秒
LCK_M_X
= 580秒
PAGEIOLATCH_EX
= 4215秒
LCK_M_X
= 587秒
15
7
14
15
? DB サーバー全体のボトルネックリソース
? 各待机が発生している时间帯と推移
16
待機リソース ブレイクダウンするポイント
CPU 論理コア単位
ユーザーモード/カーネルモード
メモリー OS 上のメモリー領域 (Stack/Private Data)
SQL Server 内メモリー領域 (BPool/Stolen)
ディスク IO キャッシュ維持時間、キャッシュ ヒット
論理ドライブ単位、LUN 単位
データ、トランザクション ログ
ユーザーデータベース、システム データベース
ネットワーク NIC 単位、送信/受信
ラッチ ラッチ種類
17
? クエリー実行 (CPU/ディスクIO サイズ) の累積値 (*)
(*) 但し、プロシージャーキャッシュに残存しているクエリーのみ。
同一クエリープランごとの集約値
? sys.dm_exec_query_stats
? 各クエリー、トランザクションごとの情報
CPU使用時間、ディスク IOサイズ、待機原因、待機リソース詳細
? sys.dm_exec_requests, sys.dm_exec_sessions
18
19
? リソース(CPU/ディスク IO) 使用量削減を目指す
? 実行プラン確認、いわゆるクエリーチューニングの実施
? 他原因の解消を目指す
? ロック、ラッチ、ネットワーク IO、その他
20
1. パフォーマンス ボトルネック特定手順
2. パフォーマンス問題対処を支えるツールセット
3. インサイド SQL Server パフォーマンス
4. まとめ
21
http://sqlnexus.codeplex.com/wikipage?title=Sql2005PerfStatsScript&referringTitle=Home
22
23
24
25
? パフォーマンス遅延が発生した際の原因分析
? ディスク使用量やリソース使用状況の推移把握
? SQL Server 2008 以降でサポート
26
? GUI で容易に構成、参照可能
27
28
29
30
31
32
1. パフォーマンス ボトルネック特定手順
2. パフォーマンス問題対処を支えるツールセット
3. インサイド SQL Server パフォーマンス
4. まとめ
33
34
Trace.WriteLine (“処理 1 開始”)
long start = TraceTime.Now ();
???
処理1 (データベースアクセス)
???
long interval = TraceTime.Now - start;
Trace.WriteLine (“処理 1 終了 処理時間=[” + interval + “]”);
35
SQL Server 2005
SQL Server 2008
SQL Server 2008 R2
SQL Server 2012
SQL Server 2014
36
BROKER_EVENTHANDLER / BROKER_RECEIVE_WAITFOR / BROKER_TRANSMITTER / CHECKPOINT_QUEUE /
CHKPT / CLR_AUTO_EVENT / CLR_MANUAL_EVENT / LAZYWRITER_SLEEP / LOGMGR_QUEUE /
ONDEMAND_TASK_QUEUE / REQUEST_FOR_DEADLOCK_SEARCH / RESOURCE_QUEUE /
SERVER_IDLE_CHECK / SLEEP_BPOOL_FLUSH / SLEEP_DBSTARTUP / SLEEP_DCOMSTARTUP /
SLEEP_MSDBSTARTUP / SLEEP_SYSTEMTASK / SLEEP_TASK / SLEEP_TEMPDBSTARTUP / SNI_HTTP_ACCEPT /
SQLTRACE_BUFFER_FLUSH / TRACEWRITE / WAIT_FOR_RESULTS / WAITFOR_TASKSHUTDOWN /
XE_DISPATCHER_WAIT / XE_TIMER_EVENT
37
38
39
- ストアドプロシージャーで 1 件ずつカーソルフェッチ
40
41
クエリー群で必要な
ストレージの IOPS, bandwidth
物理ストレージ自体の
IOPS, bandwidth>
42
- ページの追加/分割
43
44
1. パフォーマンス ボトルネック特定手順
2. パフォーマンス問題対処を支えるツールセット
3. インサイド SQL Server パフォーマンス
4. まとめ
45
46
http://msdn.microsoft.com/ja-jp/library/ms179984.aspx
http://msdn.microsoft.com/ja-jp/library/ms175066.aspx
http://msdn.microsoft.com/ja-jp/library/ms188743.aspx
http://technet.microsoft.com/ja-jp/library/bb677179.aspx
http://sqlnexus.codeplex.com/
http://sqlnexus.codeplex.com/wikipage?title=Sql2005PerfStatsScript
http://msdn.microsoft.com/ja-jp/library/ms162833.aspx
? 本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、
ここに記載した情報に対していかなる責務を負うものではなく、提示された情報の信憑性については保証できません。
? 本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。
? すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段(電子的、
機械的、複写、レコーディング、その他)、および目的であっても禁じられています。
これらは著作権保護された権利を制限するものではありません。
? Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれらの
特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。
? 2014 Microsoft Corporation. All rights reserved.
Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。
その他、記載されている会社名および製品名は、一般に各社の商標です。

More Related Content

SQL Server パフォーマンス問題対処 Deep Dive