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