データベースの運用において、I/O問題はよく見られる問題の一つです。主に以下の2つのシナリオに分類されます:
一つ目は、特定のSQLの実行過程で主なオーバーヘッドがディスク読み取りにかかっており、どのデータベースオブジェクトやSQL演算子と関連しているかを調査したい場合です。
二つ目は、OCP監視でデータベースのディスク読み書き負荷が非常に高いことが確認され、その負荷の発生源を特定したい場合です。
皆様が迅速に問題の根本原因を特定し、効率的に解決できるよう支援するため、ここでは明確で実用的なI/O問題調査プロセスをまとめました。このプロセスは、明確な操作手順を提供し、問題処理の効率を向上させ、業務への影響を可能な限り軽減することを目的としており、日常の運用保守作業を強力にサポートします。
I/O問題は主に以下の2つのシナリオに分類されます:
SQLレベルの問題:特定のSQLの実行過程でディスク読み取りのオーバーヘッドが大きく、データベースオブジェクトや演算子と関連付けて分析する必要があります。
クラスタレベルの問題:OCP監視でディスクの読み書き負荷が高いことが表示され、負荷の発生源を特定する必要があります。
I/Oボトルネック問題の調査プロセスは以下のとおりです。

プロセスの概要
I/O関連の問題がないか確認します。
以下の方法で確認できます:
OCPにログインし、物理I/O回数および物理I/Oスループットのパフォーマンス監視から、ノードレベル(OBServer次元)およびテナントレベル(テナント次元)のI/O帯域幅を確認します。特定のノードまたはテナントのI/O帯域幅が大きい場合、I/O関連の問題が存在する可能性があります。
ASHレポートのTop Foreground DB TimeおよびTop Background DB Timeを確認します。
db file data read、db file compact read、db file compact write、row store disk writeなど、File/DiskやRead/Writeに関連するI/O関連の待機イベントの割合が高い場合、I/O関連の問題が存在する可能性があります(Wait Classの値がUSER_IOまたはSYSTEM_IOに対応)。
クラスタレベルの問題調査を実施します。
問題発生時刻に対応するノードおよびテナントのASHレポートを取得します。
Top Foreground DB TimeおよびTop Background DB Timeの内容を確認し、I/Oの発生源を調べます。
フォアグラウンドのI/O関連待機イベントの割合が高い場合、現在のI/O負荷は主にフォアグラウンドセッションに集中していることを意味します。この場合は、手順3に進み、SQLレベルの問題調査を実施します。
そうでない場合、I/Oの発生源をさらに調査します。
I/Oの発生源をさらに調査します。
Top IO Bandwidthの内容を確認します。
IO Size(MB)の値が大きいほど、問題発生時刻において、対応するモジュールが配信したI/Oの総サイズが大きいことを示します。IO Size(MB)が大きいProgram Module Action/SQL IDフィールドを選択し、対応する情報を取得します。PX/DASの実行関連情報の場合は、次の手順に進み、SQLレベルの問題調査を実施します。それ以外の場合は、関連ドキュメントを参照して処理するか、技術サポートに連絡し、分析および処理の支援を依頼します。
SQLレベルの問題調査を実施します。
事前に取得した問題発生時刻に対応するノードおよびテナントのASHレポートに基づき、フォアグラウンドのI/O関連待機イベントの割合が高い場合、さらに調査を進めます:
Top SQL with Top EventおよびTop SQL with Top Opreatorの内容を確認します。
Top SQL with Top Event:取得したASHレポートで実行コストが最も高いSQLを表示し、
Top Event列には対応するSQLで割合が最も高い待機イベントを表示します。Top SQL with Top Opreator:取得したASHレポートで実行コストが最も高いSQLを表示し、
Top OperatorおよびTop Event列にはそのSQLに対応するコストが最も高い演算子IDとevent_idを表示します。これら2つのテーブルを観察することで、I/O関連待機イベントに対応するSQLおよび対応する演算子IDを取得できます。
I/Oがどのデータベースのテーブルパーティションへのアクセスによって引き起こされたかをさらに知りたい場合、Top DB Objectセクションを確認し続けることができます。このセクションでは、ユーザーSQLが最も頻繁にアクセスするtablet_idをリストアップしています。
取得した情報に基づき、関連ドキュメントを参照して処理するか、技術サポートに連絡し、分析および処理の支援を依頼します。