47

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

  • Upload
    kosasaki

  • View
    3.339

  • Download
    14

Embed Size (px)

Citation preview

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 の米国およびその他の国における登録商標または商標です。

その他、記載されている会社名および製品名は、一般に各社の商標です。