GLOBALベクトル索引を使用したパーティション・メンテナンス操作

パーティション・メンテナンス操作が実行される表は、パーティション表である必要があります。RANGELISTHASHおよびCOMPOSITEなどの様々な方法を使用してパーティション化でき、1つ以上のグローバルIVF索引およびHNSW索引を持つことができます。

グローバルIVF索引およびHNSW索引では、次のパーティション・メンテナンス操作がサポートされています:

  • ADD [SUB]PARTITION
  • DROP [SUB]PARTITION
  • MERGE [SUB]PARTITION
  • SPLIT [SUB]PARTITION
  • EXCHANGE [SUB]PARTITION
  • MOVE [SUB]PARTITION
  • RENAME [SUB]PARTITION
  • COALESCE [SUB]PARTITION

通常、パーティション・メンテナンス操作では、ALTER TABLE文でUPDATE GLOBAL INDEXまたはUPDATE INDEXES句が指定されていないかぎり、グローバル・ベクトル索引はデフォルトで保守されません。このルールの例外は、rangeまたはlistでパーティション化された表に新しいパーティションが追加される場合です。この場合、新しいパーティションにはまだデータがないため、パーティション・メンテナンス操作中にデータを保持する必要がないため、UPDATE GLOBAL INDEXまたはUPDATE INDEXES句は必要ありません。

パーティション・メンテナンス操作の前にステータスがVALIDの場合、UPDATE GLOBAL INDEXESまたはUPDATE INDEXES句が指定されると、パーティション・メンテナンス操作の処理中にグローバルIVFまたはHNSW索引が自動的に保守されます。パーティション・メンテナンス操作の完了後も、そのステータスはVALIDのままです。

ノート:

ALTER TABLE文でのONLINE句の使用は、現在サポートされていません。ALTER ABLE MERGE PARTITION ONLINEなどの文の実行は、ORA-14808: table does not support ONLINE MERGE PARTITION due to unsupported vector index.で失敗します

グローバルIVF索引は、次の2つの表で構成されます:

  • VECTOR$<base table name>_IVF_IDX$<object info>$IVF_FLAT_CENTROIDSと呼ばれるもの。識別された重心ベクトルおよび関連するIDのリストが含まれています。

  • VECTOR$<base table name>_IVF_IDX$<object info>$IVF_FLAT_CENTROID_PARTITIONSと呼ばれるもの。重心IDでリスト・パーティション化されています。各パーティションには、そのパーティションの対応する重心IDと密接に関連する(クラスタ)実表のベクトルが含まれています。

次の図にこれを示します。

この構造は、まず問合せベクトルに最も近い重心を識別し、次に対応する重心IDを使用して不要なパーティションをプルーニングすることによって、索引の検索を高速化するために使用されます。

ただし、実表が一部のリレーショナル・データでパーティション化されており、問合せが実表のパーティション・キーでフィルタ処理されている場合、グローバルIVF索引は実表のパーティション・キーから完全に独立しているため、最適ではありません。たとえば、ベクトル化された写真に似たカリフォルニア州の上位10軒の家を検索する場合、その写真自体はおそらくカリフォルニア州とは無関係です。問合せでは、実表が州別にパーティション化されているため、カリフォルニアに対応するパーティションのみを検索できることがメリットとなりますが、その問合せではカリフォルニアにない可能性がある画像も確認する必要があります。

このようなタイプの問合せをさらに高速化するには、ローカルIVF索引を作成できます。索引のローカルという用語は、実表のパーティションまたはサブパーティションと索引のパーティションの間の1対1の関係を指します。ローカルIVF索引の詳細は、unresolvable-reference.html#GUID-D815E2DE-CA3D-4C8B-AC3C-195653F42919を参照してください。