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を下回るまで、新しい計画はプランキャッシュに追加されません。
詳細を見る
実行計画キャッシュの詳細については、実行計画キャッシュを参照してください。