このドキュメントでは、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 を参照してください。