SQL Serverのパフォーマンスの監視は、多くのデータベース管理者によって最も重要な責任であると考えられています。サーバーのパフォーマンスが低いと、社内の運用だけでなく、顧客向けのアプリケーションにも悪影響が及ぶ可能性があることを考えると、SQLのパフォーマンスを追跡し、問題を迅速に軽減することは、会社の成功と収益性にとって非常に重要です。
より多くの組織がSQLServerに目を向けるにつれて、DBAは、堅実なパフォーマンス監視戦略を実装するのに役立つリソースをますます探しています。 DBAがSQLServerのパフォーマンス監視を迅速に開始するのに役立つドキュメントは豊富にありますが、ほとんどすべてのDBAが迅速な回答を求めている一般的な質問がいくつかあります。ここでは、SQLServerのパフォーマンス監視に関する最もよくある10の質問に対する回答を示します。
SQL Serverのパフォーマンス監視とは何ですか?
SQL Serverのパフォーマンス監視の主な目的は、SQLServerインスタンスの一貫したパフォーマンスと高可用性を確保することです。パフォーマンスの監視は2つの部分からなるプロセスであり、システムを最適に稼働させ続けるには、両方の部分が不可欠です。
-
監視: 事前設定されたしきい値に対して広範囲のパフォーマンスメトリックを追跡して、異常な動作を識別し、問題に固有のアラームをDBAに通知し、診断プロセスを開始するのに十分なコンテキストを提供するメカニズムを提供します。
-
診断: パフォーマンスの問題の原因を特定するために必要なワークフローとツール、および当面の問題を修正するために必要なデータ。
-
根本原因分析: 症状を超えて、問題を引き起こし、再発を引き起こす可能性のある根本的な問題を特定するための洞察。
-
傾向分析: 長期間にわたるパフォーマンスを確認します。傾向分析を使用して、問題が発生する前に特定します。そのため、一度限りの問題と繰り返し発生する問題を区別するか、時間の経過とともにワークロードの境界を調べます。後者は、将来のインフラストラクチャのニーズを予測し、統合の取り組みや計画されたクラウド移行の適切なサイズを通知するために使用できます。
どのデータベースパフォーマンス監視ツールが最適ですか?
DBAが担当するデータベースの数により、手動による監視と診断は実用的ではなく、おそらく不可能ですらあります。幸いなことに、最新のパフォーマンス監視ソフトウェアソリューションには、大規模な場合でもパフォーマンス監視を管理しやすくするための多数の機能が備わっています。
-
効果的なアラーム管理: アラームに優先順位を付けるということは、最初に大きな問題に取り組み、誤ったアラームを無視できることを意味します。
-
包括的な診断: 最高のパフォーマンス監視ツールを使用すると、診断を深く掘り下げることができます。問題があることを知ることは、それを修正する方法を知ることほど役に立ちません。
-
価値実現までの迅速な時間: 各インスタンスは数百のメトリックを収集し、それらをオンサイトに保存するとコストが高くなります。コスト削減とスケーラビリティのためのSaaSパフォーマンス監視ソリューションの1つを検討してください。
-
分析: 堅牢な分析は、パフォーマンス監視ツール間の重要な差別化要因です。パフォーマンスに最大の影響を与えるには、ワークロード、クエリプラン、アラームの根本原因、およびブロックに関する広範なメトリックを提供するツールを選択します。
-
履歴データの追跡: 履歴データを保存するパフォーマンス監視ツールを探してください。これにより、問題が再発しているかどうか、および問題が時間の経過とともにどのように追跡されているかがわかるため、トラブルシューティングがスピードアップします。
-
チューニングとクエリプランの最適化: 人工知能が組み込まれたツールを使用すると、クエリを微調整して、特定のインスタンスに合わせて最適化できます。
-
ヘルスチェック: ヘルスチェックはSQLServerのバイタルサインを監視して、問題が発生する可能性があることを通知します。問題が発生する前の場合もあります。
上記のすべての機能を備えたツールが必要な場合は、クラウド駆動型のSQLServerパフォーマンス監視ソリューションの1つを検討する必要があります。スケーラビリティ、柔軟性、価格において比類のないこれらの監視ツールは、あらゆるニーズを満たすための安全なパフォーマンス監視プラットフォームを提供します。
データベースのパフォーマンス監視を最適化するための最良の方法は何ですか?
パフォーマンス監視を最適化する最良の方法の1つは、自動化です。ディスクスペースの監視、エラーログの検査、データベースバックアップの検証などの一般的なタスクを自動化すると、これらのタスクが確実に完了し、DBAがより価値の高い作業を行うための時間を増やすことができます。
さらに、以下を実装して、SQLServerのパフォーマンス監視を最適化できます。
-
モバイルモニタリング: モバイルモニタリングは、AndroidおよびiOSデバイスから利用できます。ヒートマップ、スマートアラーム、およびアラームリストを提供するモバイルパフォーマンス監視により、問題を診断し、どこからでもトリアージを開始できます。
-
チューニングとクエリの最適化: パフォーマンスチューニングを使用すると、SQLクエリと実行プランを視覚化、分析、最適化できます。これは、最もコストの高い演算子を強調表示し、問題の修正案を提示し、クエリとクエリプランを書き直して最適化することで実現します。
-
ヘルスチェック: ヘルスチェックは、長い待機やI / O遅延など、各SQL Serverインスタンス内のヘルスの問題を特定することにより、パフォーマンスの監視を最適化するのに役立ちます。ヘルスチェックは履歴データも提供するため、パフォーマンスの問題を経時的に追跡できます。
SQL Server監視ツールを選択するにはどうすればよいですか?
SQLServerパフォーマンス監視ツールを決定する際の主な考慮事項は2つあります。
どのようなツールをお探しですか?
考慮すべきパフォーマンス監視ツールには、主に3つのタイプがあります。
-
カスタム/社内構築: この場合、何かができるからといって、必ずしもそうする必要があるとは限らないことに注意してください。はい。社内のパフォーマンス監視ツールを組み合わせて、PerfMon、トレース、DMV、およびXEventsを使用してメトリックを収集できます。しかし、短所はこのルートを取ることの長所をはるかに上回ります。スケーラブルではないため、インスタンスが増えると、パフォーマンス監視機能が低下します。また、SQL Serverの最適なパフォーマンスを確保するために、監視する必要のあるすべてのものを監視することはできません。データの収集を開始したら、それを有用なものにするためにどこかに保存する必要があり、それは高価になる可能性があります。結論-パフォーマンス監視ツールの構築と保守に貴重な時間を費やすか、ミッションクリティカルなワークロードの修正と調整に費やす方が価値があります。
-
無料/オープンソース: これは、独自のパフォーマンス監視ソリューションを作成するよりも優れた選択肢となる可能性がありますが、それでも制限があります。少しカスタマイズできますが、カバレッジの幅と事前設定されたアラートが不足しています。また、独自のデータストレージスペースを提供する必要があります。監視対象サーバーに影響を与えることなく大量のパフォーマンスデータを効果的にキャプチャし、数百のメトリックに適切なしきい値を設定し、収集された大量のデータを管理し、これを1つのバージョンから最新の状態に保つことができるツールを構築するのは複雑なプロセスです。次へのSQLサーバー。パフォーマンス監視システムを構築するのではなく、問題の解決に時間を集中してください。コミュニティの更新に依存している場合、データベースプラットフォームの新しいバージョンのサポートは、リリースが遅れる可能性があります。
-
商用: 市販のSQLパフォーマンス監視ツールは、さまざまな機能とレベルのカスタマイズを提供し、その多くは驚くほど手頃な価格です。市販のツールは、ヘルスチェック、アラーム管理、パフォーマンス診断、モバイル監視機能などのオプションを使用してパフォーマンスの監視を容易にします。これらの機能は、無料のツールや社内で構築されたツールでは得られません。
特定の環境に対するニーズは何ですか?
パフォーマンス監視ツールを選択する前に、特定のニーズを満たすツールを特定するために、次の質問を自問してください。
-
監視するインスタンスの数はいくつですか?
-
それらは同じ場所に配置されていますか、それとも分散していますか?
-
それらはオンプレミスですか、それともクラウド(またはその両方)ですか?
-
インフラストラクチャとライセンスの一括払いを支払う余裕はありますか、それともコストを分散させる必要がありますか?
-
監視ツール専用のインフラストラクチャとデータベースインスタンスを利用できますか?
-
監視インフラストラクチャを構築および維持するための時間またはリソースが社内にありますか?
-
このツールには、複数のディメンションのワークロードを即座に分析して、スクリプト作成の時間を節約する機能がありますか?
-
データを解析して特定の問題を特定するのに役立つスマートな機能はありますか?
-
このツールは、関連するドリルダウンに即時診断、ベストプラクティス、または診断を提供しますか?
データベースのパフォーマンスの状態を監視するための最良の方法は何ですか?
SQL Serverに異常がある兆候は、次のようなものがあります。
-
一般的なワークロードの速度低下
-
接続/クエリのタイムアウト
-
過度のCPU使用率
-
記憶圧
-
過度のI/O読み取り/書き込みレイテンシ
-
過剰なトランザクションログまたはTempDBサイズ
これらの症状のいずれかに気付いた場合は、システムを最高のパフォーマンスに戻すためのヘルスチェックを設定するときが来ました。パフォーマンスの問題の原因を特定するために実行できる最初の手順は次のとおりです。
-
パフォーマンスベースラインを確立し、それに対して測定する
-
バックアップの確認
-
欠落しているインデックスをチェックする
-
アドホッククエリによるワークロードの割合の決定
SQL Serverのパフォーマンス監視に最適なメトリックは何ですか?
パフォーマンスの追跡と改善に役立つ測定可能なメトリックは数百ありますが、すべてのSQLServerメンテナンスプランの一部となるはずの傑出したものがいくつかあります。監視する主な領域のいくつかと、監視する必要のある指標は次のとおりです。
-
インデックス。 データベースは常に変化しているため、インデックスはパフォーマンスの問題の原因となることがよくあります。データの追加と削除、インデックスの変更と削除はすべて、パフォーマンスの低下につながります。注目すべき指標は次のとおりです。
- フィルファクター
- I / O
- 断片化
-
バッファキャッシュ。 バッファキャッシュを設定して、ページがそこにとどまる時間を最適化することが重要です。バッファキャッシュをやり過ぎたり、他の場所で必要なメモリを占有したりすることはありません。注目すべき指標は次のとおりです。
- ページの平均余命
- バッファキャッシュヒット率
-
T-SQL。 SQL Serverは、SQLステートメントをアドホックで実行する代わりに、それらをバッチ処理し、実行プランにコンパイルしてキャッシュし、必要に応じてステートメントを再コンパイルします。過度のコンパイルと再コンパイルは、パフォーマンスを低下させる可能性があります。注目すべき指標は次のとおりです。
- SQLコンパイル
- SQLの再コンパイル
-
注意深く監視するその他の指標:
- 待機とブロックされたプロセスをロックします
- CPU使用率
データベースパフォーマンス監視の一般的な問題は何ですか?
パフォーマンスのボトルネック
パフォーマンスのボトルネックは、データベースの速度が遅いか応答しないこととして現れます。ボトルネックは、メモリ、ストレージ、またはプロセッサに関連している可能性があるため、見つけるのが難しい場合があります。ただし、最初に問題を探す必要がある場所がいくつかあります。
- WRITELOG待機時間
- ネストされたループ参加
- TempDBの競合
低ページ寿命(PLE)
PLEが低いと、SQL Serverがデータファイルを見つけるためにより頻繁にディスクにアクセスする必要があり、バッファキャッシュからデータを読み取るよりもはるかに時間がかかるため、パフォーマンスが低下します。
フラグメンテーション
インデックスに過度の断片化がないか確認してください。 SQL Serverのパフォーマンスは、データを見つけるために散在して部分的に埋められたページを検索する必要がある場合に低下します。
データベースパフォーマンス監視システムをどのように設定すればよいですか?
SQL Serverのパフォーマンス監視ソリューションを決定したら、それを起動して実行します。すぐにすべての輝かしい新機能に飛び込みたいと思うかもしれませんが、一歩下がってプロセスに系統的に取り組むことは、システムを最大限に活用するのに役立ちます。新しいパフォーマンス管理ツールをオンボーディングするためのヒントを次に示します。
-
最も注意が必要なインスタンスを決定します
-
前提条件を実行します
-
システム要件を知る
-
インストーラーをダウンロード
-
接続を追加する
SQLサーバーのパフォーマンス監視に使用できるクエリは何ですか?
パフォーマンスの監視に使用するクエリは、追跡しているメトリックによって異なります。ただし、メモリの問題の検出、インデックスの最適化の評価、および許容できない待機時間の特定は、すべてのDBAのパフォーマンス監視チェックリストの最上位にある可能性があります。 MicrosoftのSQLServerドキュメントには、パフォーマンス監視計画の実装に役立ついくつかのクエリの詳細が記載されています。
-
メモリ使用量
-
インデックスの最適化
-
統計を待つ
データベースパフォーマンス監視のベストプラクティスは何ですか?
「ベストプラクティス」という用語に同意しない人もいますが、SQL Serverのパフォーマンスの監視に関しては、システムを正常に保ち、ユーザーを満足させるためにDBAがしなければならないことがあると主張することはできません。
インデックスのメンテナンスを優先する
インデックスを無視することは、パフォーマンスの問題を引き起こす確実な方法です。インデックスは、断片化やページ分割など、一般的なパフォーマンスキラーの原因です。
ワークロードを把握する
「通常」がどのように見えるかわからない場合、問題が発生したときを知るのは困難です。次のような質問をして、ワークロードを理解するために時間をかけてください。
-
このインスタンスが最も忙しいのはいつですか?
-
このインスタンスを使用するアプリケーションは何ですか?
-
最後のバックアップはいつでしたか?
-
このインスタンスには既知のパフォーマンスの課題がありますか?
特定のニーズを満たすパフォーマンス監視ツールを選択してください
SQL Serverパフォーマンス監視ツールを使用する前に、まずニーズを定義する必要があります。パフォーマンス監視ツールで何を達成しようとしているのかを理解したら、要件を満たす機能を備えたソリューションを自信を持って探すことができます。
パフォーマンスのボトルネックを見つけて修正する
パフォーマンスのボトルネックの明らかな症状には、メモリの使用量が多すぎる、待機時間が長い、インデックスの断片化、インデックスの数が多すぎる、または少なすぎるなどがあります。これらのボトルネックをすばやく見つけて修正することは、DBAの主要な責任の1つです。データベースのパフォーマンスを最高の状態に保つための最良の方法は、パフォーマンスのボトルネックやその他のパフォーマンス低下の原因を簡単に見つけて修正するのに役立つパフォーマンス監視ツールを実装することです。