INDEX_VECTOR_MEMORY_ESTIMATE プロシージャは、既存のテーブルに作成されたベクターインデックスのメモリ使用状況を分析するために使用されます。
説明
この関数は、V4.3.5 BP3バージョンからサポートされています。
注意
このプロシージャの計算は統計情報に依存しているため、呼び出す前にANALYZE TABLEを実行して統計情報を更新する必要があります。
構文
FUNCTION index_vector_memory_estimate (
IN table_name VARCHAR(65535),
IN column_name VARCHAR(65535),
IN idx_type VARCHAR(65535),
IN idx_parameters LONGTEXT DEFAULT NULL)
INDEX_VECTOR_MEMORY_ESTIMATE は table_name と column_name からベクトル列の次元数とデータ型の情報を読み取り、統計情報から総ベクトル数と最大パーティションベクトル数を取得します。メモリの推定計算は INDEX_VECTOR_MEMORY_ADVISOR と一致します。
パラメータの説明
| パラメータ | 説明 |
|---|---|
| table_name | テーブル名。直接テーブル名を指定することも、データベース名とテーブル名を指定することもできます。 |
| column_name | ベクトル列名。 |
| idx_type | 索引タイプ。HNSW/HNSW_SQ/HNSW_BQ/IVF_FLAT/IVF_SQ8/IVF_PQ のいずれかを指定します。大文字と小文字は区別されません。 |
| idx_parameters | 索引パラメータ。テーブル作成時に使用したベクトル索引パラメータ文字列です。例:distance=l2, type=hnsw, lib=vsag。詳細については、ベクトル索引の作成を参照してください。 |
戻り値は、メモリ推定結果を記述した文字列形式です。
注意
OceanBaseでは、HNSW_BQ索引を作成する際、システムはメモリ状況に基づいてパーティションテーブルのインデックス作成方式を並列または非同期で自動選択します。INDEX_VECTOR_MEMORY_ESTIMATE 関数が返す推奨値は、インデックス作成を非同期で実行する場合の最大メモリ要件です。メモリがこの値に満たない場合、インデックス作成を並列で実行できず、インデックス作成時間が長くなる可能性があります。
例
テーブル
t1を作成し、データを挿入します。CREATE TABLE t1 (id int auto_increment, c1 vector(3)); INSERT INTO t1(c1) SELECT array(1/UNIFORM(1,1000,RANDOM(1)), 1/UNIFORM(1,1000,RANDOM(2)) , 1/UNIFORM(1,1000,RANDOM(3))) FROM table(generator(10000));テーブル
t1の統計情報を更新します。ANALYZE TABLE t1;テーブル
t1のベクトルインデックスのメモリ見積もり結果を照会します。-- HNSWインデックスのメモリ見積もり結果を照会する SELECT dbms_vector.index_vector_memory_estimate('t1','c1','HNSW','M=10,TYPE=HNSW'); +-----------------------------------------------------------------------------+ | dbms_vector.index_vector_memory_estimate('t1','c1','HNSW','M=10,TYPE=HNSW') | +-----------------------------------------------------------------------------+ | Suggested minimum vector memory is 11.5 MB | +-----------------------------------------------------------------------------+ 1 row in set -- IVFインデックスのメモリ見積もり結果を照会する SELECT dbms_vector.index_vector_memory_estimate('t1','c1','IVF_FLAT','SAMPLE_PER_NLIST=100'); +---------------------------------------------------------------------------------------------------------+ | dbms_vector.index_vector_memory_estimate('t1','c1','IVF_FLAT','SAMPLE_PER_NLIST=100') | +---------------------------------------------------------------------------------------------------------+ | Suggested minimum vector memory is 151.5 KB, memory consumption when providing search service is 1.5 KB | +---------------------------------------------------------------------------------------------------------+ 1 row in set