このドキュメントでは、OceanBaseデータベースにおけるベクトルインデックスのメモリ使用量の見積もりと管理方法について説明します。
ベクトルインデックスのメモリ設定
OceanBaseのベクトル検索では、ob_vector_memory_limit_percentageを設定することでベクトルインデックスのメモリを制御します。
V4.4.1以前のバージョンでは、HNSW/HNSW_SQ/HNSW_BQベクトルインデックスを使用する前に、
ob_vector_memory_limit_percentageを手動で設定してベクトル機能を有効にする必要があります。最適な検索パフォーマンスを得るためには、値を30に設定することを推奨します。デフォルト値のままだと、ベクトルインデックスにメモリが割り当てられず、インデックス作成時にエラーが発生します。設定例は以下の通りです:ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;V4.4.1以降のバージョンでは、ベクトル検索機能はデフォルトで有効になっています。デフォルト値の
0は適応モードを意味し、システムがテナント内のベクトルインデックスデータのメモリ使用率を自動調整します。手動での調整は不要です:- テナントの実メモリが8GB以下の場合、この値は
40に自動設定されます。 - テナントの実メモリが8GBを超える場合、この値は
50に自動設定されます。
- テナントの実メモリが8GB以下の場合、この値は
インデックスメモリの見積もりと実際の使用量の確認
DBMS_VECTORシステムパッケージを使用してインデックスメモリの見積もりを行うことができます。
- テーブル作成前には、INDEX_VECTOR_MEMORY_ADVISORプロシージャを使用してインデックスメモリを見積もります。
- テーブル作成後にデータを挿入した場合は、INDEX_VECTOR_MEMORY_ESTIMATEプロシージャを使用してインデックスメモリを分析します。
ベクトルインデックスのメモリ見積もりでは、2つの情報が返されます。1つはベクトルインデックス作成に必要な最小メモリ構成で、もう1つはHNSW_SQおよびIVFインデックス作成後の実際のメモリ使用状況です。
実際のメモリ使用量の詳細は、ビューGV$OB_VECTOR_MEMORYまたはV$OB_VECTOR_MEMORYから取得できます。
インデックス再構築時のメモリ最適化
パーティションテーブルのベクトルインデックス再構築操作については、vector_index_memory_saving_mode構成パラメータを提供しており、インデックス再構築時のメモリ使用量を制御できます。このモードを有効にすると、パーティションテーブルのベクトルインデックス再構築(rebuild)処理中のメモリ消費を削減できます。通常、ベクトルインデックスの再構築には、インデックスサイズの2倍に相当するメモリが消費されます。メモリ節約モードを有効にすると、システムはパーティションテーブルの各パーティションの構築が完了するごとに、そのパーティションのメモリインデックスを一時的に削除してメモリを解放し、再構築操作全体で必要なメモリの総量を効果的に削減します。構文と例については、vector_index_memory_saving_modeを参照してください。