INDEX_VECTOR_MEMORY_ESTIMATE 関数は、作成済みテーブルのベクトルインデックスのメモリ使用状況を分析するために使用されます。
注意
この関数はV4.4.1バージョンから導入されました。
注意
この関数の計算は統計情報に依存しているため、呼び出す前に 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_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