EXPLAINステートメントを実行して表示される実行計画は推定値であり、Plan Cacheにキャッシュされている実行計画こそが実際のものです。Plan CacheはSQL文のハードパーソナライズを回避することができます。同じSQLリクエストがOceanBaseデータベースに送信されると、キャッシュからそのステートメントに対応する計画を直接取得し、その計画を直接実行することで、リクエスト処理の高速化を実現します。
Plan Cache関連の構成パラメータ
| パラメータ | 説明 |
|---|---|
| plan_cache_evict_interval | この構成パラメータは、実行計画の削除が必要かどうかをチェックする間隔時間を設定します。デフォルト値は5秒です。 |
Plan Cache関連のシステム変数
| システム変数 | 説明 |
|---|---|
| ob_plan_cache_percentage | このシステム変数は、計画キャッシュが使用できるメモリをテナントメモリの何パーセントとするかを設定します。計画キャッシュが使用できる最大メモリ(メモリ上限の絶対値)= テナントメモリ上限 × ob_plan_cache_percentage / 100、デフォルト値は5です。 |
| ob_plan_cache_evict_high_percentage | このシステム変数は、計画キャッシュの削除をトリガーするメモリサイズをメモリ上限の絶対値に対するパーセンテージで設定します。計画キャッシュの削除をトリガーするメモリサイズ(削除計画のハイウォーターマーク)= メモリ上限の絶対値 × ob_plan_cache_evict_high_percentage / 100、デフォルト値は90です。 |
| ob_plan_cache_evict_low_percentage | このシステム変数は、計画キャッシュの削除を停止するメモリサイズをメモリ上限の絶対値に対するパーセンテージで設定します。計画キャッシュの削除を停止するメモリサイズ(削除計画のローワーターマーク)= メモリ上限の絶対値 × ob_plan_cache_evict_low_percentage / 100、デフォルト値は50です。 |
例えば、あるテナントのメモリサイズが10GB、ob_plan_cache_percentageの値が10、ob_plan_cache_evict_high_percentageの値が90、ob_plan_cache_evict_low_percentageの値が50の場合:
プランキャッシュメモリ上限絶対値=10GB×10/100=1GB
プランの削除のハイウォーターマーク=1GB×90/100=0.9GB
プランの削除のローワーターマーク=1GB×50/100=0.5GB
このテナントのあるOBServerノード上でプランキャッシュの使用量が0.9GBを超えると、削除がトリガーされ、最も長く実行されていないプランが優先的に削除されます。削除により使用メモリが0.5GBになると、削除は停止します。削除の速度が新しい計画の生成速度より遅い場合、プランキャッシュの使用メモリがメモリ上限絶対値の1GBに達した時点で、新しい計画はプランキャッシュに追加されなくなり、削除後の使用メモリが1GB未満になるまで新しい計画は再びプランキャッシュに追加されません。
詳細情報
実行計画キャッシュに関する詳細は、実行計画キャッシュを参照してください。