DB管理者がいますぐ確認すべき3つの設定:真・Dr. K's SQL Serverチューニング研修(4)(3/3 ページ)
SQLをうまく書くことだけがチューニングではありません。まずは、この3つの設定をチェックすることからはじめよう(編集部)
押さえておきたい4つの動的管理ビュー
ここまで、すぐにできるチューニングポイントを基に、SQL Serverの内部動作を解説してきました。これらの知識により、SQL Serverが出す情報群から読み取れるものがいままで以上に増えているはずです。例えば、以下の動的管理ビューは大変有用な情報が得られることに気がつくでしょう。
- sys.dm_os_wait_stats(累積値)
SQL OS上で発生したWait事象の発生回数と待ち時間を表示する - sys.dm_os_schedulers(現在の値)
SQL OS上のNUMAノード、スケジューラごとの実行可能な待ち行列数(Num Runnabke Queue)を表示する - sys.dm_io_virtual_file_stats(累積値)
データベースファイル(データファイルとトランザクションログファイル)ごとのI/O発生状況を表示する - sys.dm_os_perfomance_counters(現在の値と累積値が混在)
SQL Server上のすべてのパフォーマンスカウンターオブジェクトを表示する
これらをテーブルに保存するようなスクリプトを作れば、動的管理ビューの状況をすべてチェックができます。私はチューニング時に、この4つの情報を見ています。これらを見ると、スキルが上がるはずです。
【関連記事】
Dr. K's SQL Serverチューニング研修 Part II (2)
チューニングに大変革をもたらす動的管理ビュー
http://www.atmarkit.co.jp/fdb/rensai/drk2_02/drk2_02_1.html
例えば、大変重要な動的管理オブジェクトである「sys.dm_os_wait_stats」からはこのような問題点が発見可能です。ぜひ、重点的に監視を行ってください。
- ストレージ・サブシステムのI/O帯域不足
- データベース容量と比較したメモリ不足
- アプリケーションアーキテクチャの問題点
- トランザクションの境界
- 適切なロック
- 分離レベル(Isolation level)
- クエリ実行時のメモリ不足(不適切なクエリ)
- データベース物理設計の問題点
- クラスタ化インデックスと非クラスタ化インデックスの選択
- 物理ファイルのストレージへの格納(RAID選択)
ここで表示される値には、累積値(ロックとラッチの発行回数など)と、現在の値(CPUの占有率、1秒あたりのトランザクション数、負荷の状態など)という、性格の異なる数値が表示されています。その項目がどちらに属するのか、違いを把握してください。
●累積値
- データベースファイル別I/O統計情報
- ロック、ラッチタイプ別発行回数と待ち時間
- ロック:ACID プロパティ実現のためにトランザクション終了まで保持される排他制御
- ラッチ:主にSQL OSストレージエンジンが内部処理のために、一時的に内部で実施する排他制御
- SQL OS 待ち事象別発生回数と待ち時間累積値 など
●現在の値
- CPU占有率
- トランザクション数/秒
- ディスクI/O待ちキュー発生数
- ディスクI/O負荷 など
代表的な監視ツール
私が利用している監視ツール群と、その使いどころを解説しましょう。皆さんもぜひもう一度SQL Serverの状態をチェックしてみてください。
パフォーマンスモニタ
これはサーバ全体のスループットと共有資源の負荷状況を把握するためのものです。Windowsに付属したものですので、なじみ深いものかと思います。
【関連記事】
Windows TIPS
パフォーマンスモニタの使い方(基本編)
http://www.atmarkit.co.jp/fwin2k/win2ktips/1229perfmon/perfmon.html
SQL Server Profiler
ユーザーが実行中のクエリーの収集と再現テストの実施や、ブロッキングの原因究明に使います。実はこのProfilerはけっこう重たい処理です。ピーク時に使ってしまうと、それだけで負荷が高くなってしまうので、再現性確認のためにピンポイントで情報収集するツールとして活用しましょう。
【関連記事】
IT Proから見たSQL Server 2005
第3回 SQL Server 2005の管理ツール
http://www.atmarkit.co.jp/fwin2k/operation/sql2005ov03/sql2005ov03_01.html
SQL Serverダッシュボード
これは動的管理オブジェクトを見やすく表示したもので、2005から用意されたもので、最新版ではかなり機能強化されました。例えば、先に紹介したsys.dm_os_wait_statsなどもダッシュボードを通じて見ることができます。もちろん、直接動的管理ビューを確認するのもよいでしょう。
【関連記事】
BIでエンジニアもハッピーに? SQL Server新機能の狙いとは
http://www.atmarkit.co.jp/news/201004/06/sqlserver.html
そのほかにも、「Quest Software Spotlight on SQL Server」などのサードパーティのパフォーマンス監視ツールなどが挙げられるでしょう。これらのツールから出てくる情報は、数値だけをなんとなく見るのではなく、SQL Serverの内部動作を知ることでより深く理解できるようになります。ぜひ、これらのツールと数値に親しんでください。
次回以降、SQL Serverの「プロシージャキャッシュと実行プラン」について触れたいと思います。
著者紹介
熊澤 幸生(くまざわ ゆきお)
技術フェロー特別役員
メインフレーム環境で20年近くデータベース関連のITプロジェクトを数多く経験。また1979年から1983年まで米国に駐在し、データ主導型システム設計を実プロジェクトで学ぶ。1994年、アスキー・ネットワーク・テクノロジー(現、CSK Winテクノロジ)設立に参加し、SQL Server Ver 4.2からSQL Server 2000までシステム構築、教育にかかわってきた。
マイクロソフトMVP Data & Storage SQL Server(2007年4月から)。
2008年7月より、兼務形式で、マイクロソフト?SQL Server 技術顧問に就任中。
Copyright © ITmedia, Inc. All Rights Reserved.