SAP HANAの課題、第2部:クエリのチューニングとブロッキングの解消方法

Database Performance Analyzer (DPA)を使用して、SAP HANA のクエリチューニングの優先順位付け、ブロッキングの解消、およびパフォーマンス改善の効果検証を行う方法をご紹介します。

パフォーマンスの低いワークロードを特定するのは、あくまで第一歩に過ぎません。SAP HANA 環境では、チームは依然として、何を優先して変更すべきか、またリスクをどのように低減すべきかを判断する必要があります。クエリのチューニングとブロッキング分析は、その判断を下す上で役立ちます。これらを組み合わせることで、より安全にパフォーマンスを向上させるための根拠が得られます。

影響が最も大きい問題から着手する

Database Performance Analyzer (DPA) は、待機時間に基づく分析を活用し、チームが最大のパフォーマンス向上をもたらす問題に焦点を当てられるよう支援します。DPAは、単に健全性メトリクスだけから始めるのではなく、最も長い待機が発生している箇所を特定します。また、待機時間が通常レベルを上回る期間も特定します。そこから、チームは詳細に掘り下げて根本原因を調査し、推奨される次のステップを確認することができます。

SAP HANA関係者にとって、これは変更ウィンドウが限られている可能性があるため重要です。また、アプリケーションの重要度が高いため、リスクも大きくなります。チームは、新たなリスクを生み出すことなくパフォーマンスを向上させる必要があります。DPAは、累積待機時間に基づいて上位のSQLステートメントを強調表示します。その結果、チームは影響の大きいチューニング対象を特定し、最適化作業をより効果的に計画できます。

「上位SQL」と「実行プラン履歴」を使用して変更点を把握する

一見遅く見えるクエリすべてに同等の注意を払う必要はありません。待機時間が最も蓄積されているステートメントは、通常、最適化の有力な対象となります。しかし、合計待機時間が短いクエリであっても、重要なビジネス機能に影響を与える可能性があります。そのような場合、チームはそれらのプロセスに影響を与えるクエリを特定する必要があります。また、重要なワークロードを遅延させている可能性のある同時実行クエリを見極める必要もあります。

DPAのドリルダウン機能により、チームは単なる低速ステートメントのリストにとどまらない分析が可能になります。プログラムやユーザでフィルタリングすることで、重要なビジネス機能に直接影響を与えるクエリに焦点を当てることができます。実行プランは、さらに別の文脈情報を提供します。これらは、クエリが実行する各ステップ(処理が遅くなる可能性のあるステップを含む)を示します。オプティマイザが新しいプランを選択すると、パフォーマンスが急激に変化することがあります。場合によっては、パフォーマンスが低下することもあります。DPAは経時的なプランの使用状況を示すことで、新しいプランがいつ採用され、それがパフォーマンスにどのような影響を与えたかをチームが把握できるよう支援します。

チューニングを行う前に、アドバイザーとコンテキストを活用する

チューニングの判断には、単に遅いステートメントのリストだけでは不十分です。チームは、問題が物理設計、ワークロードの形状、ブロッキング、あるいはその他の要因に関連しているかどうかを理解する必要があります。DPAに組み込まれたクエリ、テーブル、インデックスのアドバイザーは、クエリの挙動に関するコンテキストを提供します。また、実行可能な設計上の推奨事項も提示します。例えば、アドバイザーは、特定の時間帯にクエリの実行頻度が高まることを示したり、クエリがブロッキング状態でかなりの時間を費やしていることを明らかにしたりできます。このコンテキストにより、DBAは何を優先して対処すべきかを判断するためのより良い出発点を得ることができます。

DPAのエビデンスを活用してチューニングを導く

SAP HANAにおいて、効果的なチューニングはエビデンスから始まります。待機分析を使用して、時間がどこで消費されているかを特定します。次に、SQLの詳細、実行プランの履歴、ブロッキング活動、およびアドバイザーの推奨事項を検証します。これらの視点を総合的に検討することで、チームは問題がクエリの挙動、実行プランの変更、ロック競合、あるいはより広範なワークロードの制約のいずれによって引き起こされているかを判断できます。

ブロッキングを根源から解決する

すべてのパフォーマンス低下が、従来のクエリチューニングの問題であるとは限りません。DPAでは、相関調査パスの一環としてブロッキングを扱います。ブロッキングは連鎖的な遅延を引き起こします。あるセッションが予想以上に長くロックを保持すると、下流のセッションが待機することになり、その結果生じるパフォーマンス低下は複数の業務機能に影響を及ぼす可能性があります。

DPAはブロッキングの連鎖を可視化し、この情報を集約して、影響の大きい根本的なブロッカーと、影響を受けたブロッキングの被害者を明らかにします。チームはブロッキング相関チャートを使用して、ロック競合がインスタンス全体のパフォーマンス問題に大きく寄与しているかどうかを判断できます。そこから、「Blocking」タブを活用して、最大のトラフィック渋滞を引き起こしている根本的なブロッカーセッションを特定できます。根本的なブロッカーのクエリをチューニングすることで、ロックの保持時間を短縮し、下流のセッションの負荷を軽減できます。これは、原因ではなく被害者である可能性のある、ブロックされたクエリをチューニングすることとは異なります。

その他のケースでは、チームはワークロードのタイミングを調整する必要があるかもしれません。可能な場合、これにより共有データへの競合を減らし、ロック競合を緩和できます。

システムコンテキストを用いて根本原因を検証する

パフォーマンス対策は、変更を適用しただけで完了するものではありません。DPA を活用することで、チームは根本原因を掘り下げ、クエリの待機時間を関連イベントと関連付け、パフォーマンス改善の可能性が最も高い待機に焦点を当てることができます。チームは、変更によって関連する待機時間が改善され、負荷が他の場所にシフトしていないことを確認する必要があります。統計情報、実行計画、ブロッキング、メトリクスと併せて待機時間を検証することで、その検証結果の説得力が高まります。ベースラインは、メトリクスが通常の範囲外になったタイミングを示すことで、有用なコンテキストを提供します。チームは、パフォーマンスが満足のいく水準に達し、安定するまで、監視とチューニングを継続する必要があります。

運用モデルが重要な理由

エージェントレスアーキテクチャは、データベースリソースの1%未満しか使用しません。その結果、チームは本番システムへの影響を最小限に抑えながらパフォーマンスを監視できます。 Database Performance Analyzerは、JDBCを介してSAP HANAに接続します。読み取り専用の監視ユーザを使用し、ネイティブな監視ビューをポーリングします。

このオーバーヘッドの少ないモデルにより、パフォーマンス分析に必要な証拠を保持しつつ、可視性を容易に拡大できます。

まとめ

チューニングとブロッキングは、同じパフォーマンス分析ワークフローに組み込むべきものです。チューニングは、チームが持続的なパフォーマンスを向上させるのに役立ちます。ブロッキング分析は、現在の応答性を損なう可能性のある競合を解決するのに役立ちます。SAP HANAチームにとって、体系的な最適化は「影響」の把握から始まります。最も重要な待機を特定します。次に、その問題がSQLの挙動、ブロッキング、実行プランの変更、あるいはその他のワークロードの制約のいずれに関連しているかを判断します。利用可能なアドバイザーやデータの相関関係を活用して、パフォーマンスの状況を裏付けます。最も安全な緩和策を選択し、その結果を測定します。パフォーマンスが満足のいく水準に達し、安定するまで、監視とチューニングを継続します。

FAQ(よくある質問)

チームはまず何をチューニングすべきですか?

累積待機時間が最も長いステートメントから着手してください。ただし、重要なビジネス機能に直接影響を与えるクエリも優先的に扱う必要があります。

SAP HANAの根本原因分析において、実行プランの履歴はなぜ重要なのでしょうか?

プランの履歴は、新しいプランがいつ採用されたかをチームが把握するのに役立ちます。また、その変更がパフォーマンスの低下に寄与したかどうかも示すことができます。

チューニングの前にブロッキング分析を行うべきなのはどのような場合ですか?

待機パターンから、セッションがブロッキング条件を待機していることが判明した場合は、ブロッキングを調査してください。まず、根本的なブロッカーを特定します。次に、そのクエリのチューニング、ワークロードのタイミング調整、またはその他の緩和策によって、ロック競合が軽減されるかどうかを判断します。

SAP HANA モニタリングツールにおいて、アドバイザーはクエリチューニングにどのように役立つのでしょうか?

DPA アドバイザーは、実行パターンやブロッキングに関するコンテキストを提供します。また、緩和策の決定を支援する、実行可能な設計上の推奨事項も提示します。

メモリ、CPU、ディスク、接続状況は、トラブルシューティングにおいてどのような役割を果たすのでしょうか?

DPA は、待機ベースの調査と、メモリ、CPU、ディスク使用率、接続数などのリソースの傾向を組み合わせています。これにより、チームは問題が孤立したものか、それともより広範なワークロードパターンの一部であるかを判断するのに役立ちます。