Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

11,126 views

Published on

Published in: Technology
  • Be the first to comment

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

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

×