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