INDEX_VECTOR_MEMORY_ADVISORプロシージャは、テーブルが作成されていないベクトルインデックスのメモリ使用状況を推定するために使用されます。
説明
この関数は、V4.3.5 BP3バージョンからサポートされています。
構文
FUNCTION index_vector_memory_advisor (
IN idx_type VARCHAR(65535),
IN num_vectors BIGINT UNSIGNED,
IN dim_count INT UNSIGNED,
IN dim_type VARCHAR(65535) DEFAULT 'FLOAT32',
IN idx_parameters LONGTEXT DEFAULT NULL,
IN max_tablet_vectors BIGINT UNSIGNED DEFAULT 0)
パラメータの説明
| パラメータ | 説明 |
|---|---|
| idx_type | インデックスタイプ。HNSW/HNSW_SQ/HNSW_BQ/IVF_FLAT/IVF_SQ8/IVF_PQ をサポートします。大文字と小文字は区別されません。 |
| num_vectors | ベクトルデータ量。 |
| dim_count | ベクトル次元数。 |
| dim_type | ベクトル要素のデータ型。デフォルトであり、FLOAT32 のみをサポートします。大文字と小文字は区別されません。 |
| idx_parameters | インデックスパラメータ。テーブル作成時に使用されるベクトルインデックスパラメータ文字列、例えば distance=l2, type=hnsw, lib=vsag などです。その他のパラメータについては、ベクトルインデックスの作成を参照してください。 |
| max_tablet_vectors | パーティションテーブル内の最大パーティションのベクトルデータ量。デフォルトは 0 であり、これは最大パーティションのベクトルデータ量がベクトル全体のデータ量と等しいことを意味します。パーティションテーブルを使用すると、総データ量が同じ場合でも最小メモリ要件を低減できます。 |
戻り値は、メモリ推定結果を記述した文字列形式の一文です。
注意
OceanBaseでは、HNSW_BQインデックスを作成する際、システムはメモリ状況に応じてパーティションテーブルへのインデックス作成方法を自動的に並列または直列方式で選択します。INDEX_VECTOR_MEMORY_ADVISOR関数が返す推奨値は、インデックスを直列で作成した場合の最大メモリ要求値です。メモリがこの値だけしか確保できない場合、インデックスの並列作成ができないため、インデックス作成時間が延長される可能性があります。
ベクトルインデックスの再構築を正常に実行するためには、推奨されるメモリ予約値は、インデックス構築完了後のベクトルインデックスが実際に使用するメモリ値よりも大きいことを推奨します。推奨されるメモリ値は、最大パーティションベクトル数と関連付けられています:
- HNSWおよびHNSW_SQインデックスについては、推奨されるメモリ値を返します。
- HNSW_BQインデックスについては、推奨されるメモリ値とインデックス作成完了後の実際のメモリ使用量を返します。
- IVF_FLAT、IVF_SQ8、IVF_PQインデックスについては、推奨されるメモリ値とインデックス作成完了後の実際のメモリ使用量を返します。
例
HNSWインデックスの推奨メモリ値を照会します。
SELECT dbms_vector.index_vector_memory_advisor('HNSW',1000000,768,'FLOAT32','M=10,DISTANCE=L2');
+------------------------------------------------------------------------------------------+
| dbms_vector.index_vector_memory_advisor('HNSW',1000000,768,'FLOAT32','M=10,DISTANCE=L2') |
+------------------------------------------------------------------------------------------+
| Suggested minimum vector memory is 7.2 GB |
+------------------------------------------------------------------------------------------+
1 row in set
HNSW_BQインデックスの推奨メモリ値とインデックス作成後の実際のメモリ使用量を照会します。
SELECT dbms_vector.index_vector_memory_advisor('HNSW_BQ',1000000,768,'FLOAT32','M=10,DISTANCE=L2');
+---------------------------------------------------------------------------------------------------------+
| dbms_vector.index_vector_memory_advisor('HNSW_BQ',1000000,768,'FLOAT32','M=10,DISTANCE=L2') |
+---------------------------------------------------------------------------------------------------------+
| Suggested minimum vector memory is 4.1 GB, memory consumption when providing search service is 347.5 MB |
+---------------------------------------------------------------------------------------------------------+
1 row in set
IVFインデックスの推奨メモリ値とインデックス作成後の実際のメモリ使用量を照会します。
SELECT dbms_vector.index_vector_memory_advisor('IVF_FLAT',1000000,768,'FLOAT32','SAMPLE_PER_NLIST=1024,DISTANCE=L2');
+---------------------------------------------------------------------------------------------------------------+
| dbms_vector.index_vector_memory_advisor('IVF_FLAT',1000000,768,'FLOAT32','SAMPLE_PER_NLIST=1024,DISTANCE=L2') |
+---------------------------------------------------------------------------------------------------------------+
| Suggested minimum vector memory is 452.7 MB, memory consumption when providing search service is 384.0 KB |
+---------------------------------------------------------------------------------------------------------------+
1 row in set