SQL Serverの監視方法についてサーチすると、“パフォーマンスモニター”を使った事例を多く見かけます。
しかし、パフォーマンスモニターがどのようなものか、把握できていない担当者様も多いのではないでしょうか?
そこで今回は、パフォーマンスモニターの概要とともに、SQL Serverを運用する際に監視すべき項目を解説します。
「SQL Serverの監視を任されたが、どこから着手してよいかわからない……」とお悩みの担当者様は、ぜひご覧ください。
目次
SQL Serverのパフォーマンスを監視する重要性
SQL Serverの安定稼働を目指すうえで、パフォーマンスの監視は必要不可欠な対応です。
仮に、本番稼働中のSQL Serverでパフォーマンス低下が発生したとしても、監視していなければそれにすぐ気づくことができません。
そうなると、提供しているシステムやサービスにも影響が及び、結果として大きな損害を被ることになります。
問題発生時に素早く検知・対応して、上記のような事態を発生させないためにも、SQL Serverの状態を常に把握しておく必要があるわけです。
また、パフォーマンス監視によってSQL Serverについてのデータが集まれば、将来的に発生しうる問題も事前に対策できます。
パフォーマンスモニターとは?
SQL Serverのパフォーマンスを監視する手段にもさまざまありますが、Windowsで運用するのであれば、パフォーマンスモニターを利用するのがおすすめです。
パフォーマンスモニターは、Windowsに組み込まれたパフォーマンス監視ツールです。
本来はシステムリソースの状況を可視化・監視するためのツールですが、SQL Serverのパフォーマンスを監視することもできます。
トランザクション数やロックの待ち時間など、SQL Serverを監視するうえで必要な項目は網羅されています。
特定の項目について閾値を設定し、超えた場合にアラートを飛ばすことも可能なので、実用性もなんら問題はありません。
タスクマネージャーから“パフォーマンスモニター”をクリックするだけで使い始められるので、導入も容易です。
パフォーマンスモニターにおけるSQL Serverの監視項目
パフォーマンスモニターでは、オブジェクトおよびカウンターという単位で、監視項目が定められています。
そのなかから、SQL Serverのパフォーマンスをチェックする際に監視したい項目を5つピックアップしたので、ぜひ参考としてください。
メモリーの使用量
SQL Serverのインスタンスは、稼働時間に応じてメモリーを消費していきます。
そのため、メモリーの使用量は優先して確認しておきたいところです。
パフォーマンスモニターでメモリーを監視する際は、以下のカウンターが項目として適しています。
メモリーに関連するカウンターの一例
- Memory: Available Bytes
- SQL Server: Memory Manager: Total Server Memory
- SQL Server: Memory Manager: Target Server Memory
Available Bytesはサーバー全体で利用可能なメモリーの量であり、この値が小さい場合は全体的にメモリーが不足していることを意味します。
SQL Serverと並行してソフトウェアを稼働させていると、全体のメモリーが足りなくなる可能性が高いのでこの値を注視しておきましょう。
SQL Serverが利用中のメモリーについて把握する際は、Total Server Memoryの値を確認してください。
この値が常に高くサーバー全体のメモリー量に近いのであれば、メモリーの増設が必要です。
また、理想的なメモリー消費量を示すTarget Server Memoryの値が、上記の値を大幅に上回っている場合には、SQL Serverでメモリー不足が発生していると考えられます。
この際はSSMSなどからメモリー割り当ての最小値を見直して、Total Server MemoryとTarget Server Memoryの差が小さくなるように調節してください。
SQL Server Memory Managerオブジェクトには、ほかにも多様なカウンターがあるので、状況に応じて監視項目を設定するのがベストです。
CPUの使用率
以下のカウンターを用いて、CPUの使用率も確認しておきましょう。
CPUに関するカウンターの一例
- Processor: %Processor Time
- Processor: %Privileged Time
- Processor: %User Time
- System: Processor Queue Length
メモリー同様、CPUもサーバー全体とSQL Serverのそれぞれの観点から確認しておくのがベストです。
%Processor Timeの値が常に高い場合は、システムの要求値に対してサーバーのCPU性能が足りていないため、アップグレードを検討する必要があります。
対して、SQL ServerのCPU使用率が著しいときには、%User Timeの値が高くなります。
この際はCPUに負荷をかけているクエリを特定したうえで、そのクエリが利用する統計情報を更新してください。
ただし、%Privileged Timeの値も高いのであれば、SQL Serverではなくほかのソフトウェアに原因がある可能性も考えられます。
CPUに負荷をかけている要因を正確に突き止めるためにも、上記の2項目はあわせて確認するべきでしょう。
ディスクの利用状況
SQL Serverが利用しているディスクの状況も、パフォーマンスを診断するうえでは非常に重要な項目です。
SQL Serverでのデータの読み書きはOSの入出力機能に依存しているため、ディスクの利用状況に問題があればSQL Serverのパフォーマンスにも影響が表れます。
ディスクの指標として利用できる項目は、以下の通りです。
ディスクに関するカウンターの一例
- PhysicalDisk: Avg. Disk sec/Read
- PhysicalDisk: Avg. Disk sec/Write
- PhysicalDisk: Avg. Disk sec/Transfer
- PhysicalDisk: Avg. Disk Queue Length
上記のなかでも特に重要なのが、ディスクへの読み書きの平均速度を表す、Avg. Disk sec/ReadとAvg. Disk sec/Writeです。
これらの値が25ミリ秒を超えている場合、ディスクI/Oが遅く、SQL Serverでのファイルの読み書きにも支障が出ている可能性があります。
上記のほかには、システムの要求値に対してそもそもディスク領域の量が少ない、という問題も起こりえます。
扱うファイルの量を減らせば解消可能ですが、それが難しい場合はサーバーのディスク容量を増強しなくてはなりません。
1秒あたりのバッチリクエスト数
1秒あたりに受信したバッチの数は、SQL Serverのスループットを測る際の指標となります。
パフォーマンスモニター上では、Batch Requests/secカウンターで確認が可能です。
また上記の値は、SQL Serverの状態がビジーかどうかをチェックする際にも役立ちます。
先に挙げたCPU使用率に関するカウンターとあわせて利用すれば、SQL Serverに対する作業負荷や必要な性能のベースラインを把握できるでしょう。
ユーザーの接続数
同時接続するユーザーの数が増えれば、当然それだけ要求されるシステムリソースも増加します。
ですので、SQL Serverのパフォーマンスを監視する際は、ユーザーの接続数も項目に含めておくことが大切です。
リアルタイムで接続しているユーザーの数は、User Connectionsカウンターから確認できます。
より詳細にパフォーマンスを監視する方法
ここまでにご説明した通り、パフォーマンスモニターでもSQL Serverのパフォーマンスを十分に監視できます。
しかし状況によっては、より詳細な情報を確認したいケースもあるはずです。
そのような場合には、以下に紹介するパフォーマンスモニター以外の監視方法を利用しましょう。
パフォーマンスダッシュボード
パフォーマンスダッシュボードとは、SSMSのバージョン17.2以降から追加された管理ツールです。
SQL Serverのパフォーマンスに関する情報が視覚的に把握できるようになっており、ボトルネックの迅速な特定が叶います。
確認できる情報は、CPU使用率やユーザーセッションのほか、キャッシュのヒット率やコストの高いクエリなどです。
パフォーマンスモニターと併用すれば、発生した問題の原因がSQL ServerとOSのどちらにあるのか、効果的に切り分けることが可能です。
また、集積したデータをExcel形式のレポートとして出力できるため、チームへの共有やクライアントへの報告時にも役立ちます。
クエリストア
SSMSのクエリストアを利用して、パフォーマンス低下を招いている非効率的なクエリを監視するのも有効な方法です。
クエリストア上では、改善の必要があるクエリやリソース消費量の多いクエリ、待機中のクエリなどをビュー形式で確認できます。
問題のあるクエリはそのままチューニング可能なので、問題の発見から対応までを素早く済ませられます。
パフォーマンス低下の原因がクエリにあると見当がついているなら、クエリストアを使うのが最適です。
クエリストアはほかにも、SQL Serverをアップグレードしたあとのパフォーマンスの安定化や、A/Bテストなどの場面でも効果を発揮します。
SQL Serverを運用するのであれば、特段の事情がない限り有効化しておくのが望ましいでしょう。
専用のパフォーマンス監視ツール
WindowsやSQL Serverに付帯するものではなく、別途専用の監視ツールを導入する、というのも一案です。
専用の監視ツールは、本記事で解説してきた項目が網羅できているほか、独自の機能も備えており利便性は高いといえます。
ダッシュボードの内容もシンプルに整理されている製品が多く、視覚的にわかりやすい操作が可能です。
製品によってはモバイル機能までカバーしており、オフィスにいなくともSQL Serverの状態を確認できます。
「より多くの機能を利用して監視を行いたい」「わかりやすいダッシュボードを使いたい」とお考えなら、監視ツールの導入を検討してみてはいかがでしょうか。
ただし、機能面は非常に優れている一方で、こうした製品は基本的に有償となるため、運用に際して追加のコストがかかるのは避けられません。
無償トライアル版を提供している製品もあるので、まずはそちらを試して、コストと機能面のバランスを確かめるのがおすすめです。
パフォーマンスモニターでSQL Serverを監視する際は、システムリソースやバッチリクエストなどを確認しよう
今回は、SQL Serverをパフォーマンスモニターで運用する際の、監視項目を中心に解説しました。
パフォーマンスモニターを使えば、メモリーやCPUなどの主要な項目でSQL Serverを監視できます。
本記事で取り上げたもの以外にも、パフォーマンスモニターで監視できる項目は数多くあるので、状況に合わせて選択するのが重要です。
また、SSMSの機能や専用のツールを利用すれば、パフォーマンス状況のより詳細な監視も叶います。
SQL Serverの監視ツールをお探しであれば、ボトルネックとなっている箇所が色分け表示で瞬時にわかる『Spotlight』がおすすめです。
コーソルではSpotlightの販売からサポート、ナレッジサイトの共有まで実施しておりますので、ぜひ一度お問い合わせください。