PolarDB for Oracle (PolarDB Oエンジン) における高 I/O は、主に共有バッファーキャッシュを超える大規模な SQL スキャン、または不適切なパラメータ設定により I/O 帯域幅を過剰に消費する VACUUM 操作が原因で発生します。 このトピックでは、高 I/O の原因を特定し、それぞれの解決策について説明します。
I/O の概念
| 用語 | 説明 |
|---|---|
| I/O | ディスクに対する読み取りおよび書き込み操作。 |
| I/O レイテンシ | I/O 操作のレイテンシ。 |
| 論理 I/O | アプリケーションからファイルシステムに送信される I/O。 |
| 物理 I/O | ファイルシステムからディスクに送信される I/O。 |
| シーケンシャル I/O | ディスクに対するシーケンシャルな読み取りおよび書き込み操作。 |
| ランダム I/O | 読み取りおよび書き込み操作のためのディスクへのランダムアクセス。 |
| 同期書き込み | すべてのデータがディスクに書き込まれた後にのみ、結果が返されます。 |
| 非同期書き込み | データがディスクに書き込まれる前に結果を返すことができます。 これにより、CPU リソースが解放されます。 |
高 I/O の診断と解決
shared_buffer を超える大規模な SQL スキャン
SQL ステートメントが多数の行をスキャンする際に、shared_buffer が必要なデータをすべてキャッシュできない場合があります。 その場合、PolarDB Oエンジンはディスクから直接データを読み込むため、大量の物理 I/O が発生します。
解決策:
Performance Insight を使用してスキャンの原因となっている特定の SQL ステートメントを特定し、適切なインデックスの追加やクエリの書き直しによってスキャン行数を減らすことで、クエリを最適化してください。
不適切なパラメータ設定の VACUUM
VACUUM 操作に関連するパラメータ設定が不適切な場合、高 I/O が発生することがあります。 次のパラメータを調整することで、I/O をスロットルできます:
vacuum_cost_delayvacuum_cost_limit
これらのパラメータを更新するには、「パラメータの指定」をご参照ください。
次のステップ
高 I/O の問題を解決した後、Performance Insight を使用して I/O レベルが正常に戻ったことを確認してください。