OBServer側でパフォーマンスボトルネックが発生した場合、まずはそのボトルネックポイントを特定する必要があります。つまり、ワーカースレッドが現在ブロック状態にあるのか、それとも長時間実行状態にあるのかを判断します。前者は特定のシステムオブジェクトを待機中であることを示し、後者は大量のデータをスキャンしているか、リソース不足であることを示します。異なるボトルネックポイントは、それぞれ異なる根本原因と解決策を意味します。
OBServerは、パフォーマンスボトルネックを特定するために豊富な内部テーブルとシステムログを提供しており、主にsql_auditを通じてOBServerの動作を分析します。
実行状態の問題
実行状態の問題は一般的に実行計画に関連しており、オプティマイザーが非最適な実行計画を生成したため、SQLリクエストが大量のデータをスキャンする必要がある場合や、計画キャッシュのヒット率が低く、SQL実行時に追加のコンパイル時間がかかる場合があります。実行計画の問題に加えて、実行時のリソース不足も考えられます。実行状態の問題は、実行計画の調整やリソースの増加によって解決できることが多いです。
ブロック状態の問題
データベース内のワーカースレッドは、CPU計算を行っているか、I/O、ネットワーク、クリティカルセクションなどを待機しているかのどちらかであり、これを総称してブロック状態と呼びます。ブロック状態はシステムの並行処理のボトルネックを意味し、リソースを増やすことでスループットを向上させることはできません。ブロック状態の問題では、まずブロックポイントを特定し、それに応じた最適化を行う必要があります。
以上の分析から、OBServer側でよく見られる問題は主に以下のカテゴリに分類されます:
