HNSW RAC複製

Oracle Real Application Clusters (Oracle RAC)または非RAC環境での索引作成、索引再移入またはインスタンス起動時に、Hierarchical Navigable Small World (HNSW)索引がどのように移入されるかについて説明します。

RAC環境でのHNSW索引の作成

現在、Oracle RAC環境のHNSW索引は、集中モードで作成されます。次の図は、Oracle RAC環境でのHNSW索引作成のワークフローを示しています:

  1. HNSW索引を作成するRACインスタンスは、ディスク上にHNSW ROWIDとVIDのマッピング表を作成します。「HNSWベクトル索引のオプティマイザ計画」で説明されているように、この表は、オプティマイザが特定の最適化計画を実行するために必要です。

  2. デフォルトでは、最初のHNSWスライス・グラフが作成されると、他のすべてのRACインスタンスに、それら固有のHNSWインメモリー・グラフの作成を同時に開始するように通知されます。この操作は、HNSW複製操作と呼ばれます。複製は、次の2つのステップで実現されます: プライマリRACインスタンスにより、それで作成されたHNSWスライス・グラフのディスク・チェックポイントが作成されてから、他のすべてのセカンダリRACノードにより、そのディスク・チェックポイントを使用してそのHNSWスライス・グラフがロードされます。集中モードでHNSW索引を作成すると、すべてのノードが同じグラフ構造を共有できます。

    RACノード上に構築されたHNSWスライス・グラフは、実表がパーティション化されているかどうかに基づいて、次の2つのカテゴリに分類されます。このコンテキストでは、スライスとは、索引の構築に使用されているベクトル・データのサブセットのことを示しています。1つのスライスで、表全体か、表の個々のパーティションまたはサブパーティションを表すことができます。各HNSWグラフは、単一のスライスに関して構築されています:
    • HNSW索引の表スライス・グラフ
    • HNSW索引のパーティションスライス・グラフ

ノート:

ベクトルのメモリーが十分でないインスタンスは、RAC全体のパラレルHNSW索引移入に参加できません。

複数のRACノードにわたるHNSW索引を作成する複製メカニズムに加え、完全再移入は、HNSWスライス・グラフ・リフレッシュ複製を実行するために使用されます。HNSW索引の完全再移入操作がトリガーされる理由とタイミングの詳細は、「HNSW索引のアーキテクチャ: トランザクションのサポートと永続性」を参照してください。HNSWスライス・グラフ・リフレッシュ複製プロセスは、索引作成中に使用したのと同一です。プライマリ・インスタンスにより、HNSWスライス・グラフのリフレッシュが開始され、新しい完全ディスク・チェックポイントが作成されます。その他のインスタンスにより、その最新のチェックポイントから、そのHNSWスライス・グラフがリロードされます。

インスタンス再起動時またはクラスタへの新しいノードの参加時のHNSW索引のリロード

HNSW索引はメモリー内に存在するため、インスタンスが停止されると、HNSW索引を表すインメモリーHNSWスライス・グラフが失われます。再起動時に、または新しいノードがクラスタに参加したときに、Oracleによってリロード・メカニズムがトリガーされて、メモリー内のHNSWスライス・グラフがすばやくリストアされます。このリロード・メカニズムは、Oracle RAC環境と非RAC単一インスタンス環境の両方でデフォルトで有効になっています。「RAC環境でのHNSW索引の作成」で説明したように、索引作成中に、インメモリーHNSWスライス・グラフと、ディスク上の、ROWIDとVIDのマッピング表が作成されます。ディスク上に完全チェックポイントも作成されます(有効な場合)。リロード・メカニズムの処理方法は、ディスク上にHNSWスライス・グラフの完全チェックポイントが存在するかどうかで異なります。チェックポイントの詳細は、「HNSW索引のアーキテクチャ: トランザクションのサポートと永続性」を参照してください。
  • 最新の完全チェックポイントが存在する場合: インスタンスにより、そのチェックポイントからHNSWスライス・グラフが直接ロードされて、高速リカバリが実現されます。

  • 有効なチェックポイントがない場合: HNSWスライス・グラフはゼロから再作成され、新しいHNSWスライス・グラフは古いHNSWスライス・グラフと同一にはなりません。

リロードの動作は、VECTOR_INDEX_NEIGHBOR_GRAPH_RELOADパラメータによって制御されます。インスタンスがクラスタに参加したときや再起動したときにVECTOR_INDEX_NEIGHBOR_GRAPH_RELOADインスタンス・パラメータがRESTART (デフォルト設定)に設定されている場合、および完全チェックポイントが存在し現在のインスタンスのSCNに比べ古すぎるとみなされない場合には、起動インスタンスによってそれが使用されて、そのHNSWスライス・グラフがメモリー内に作成されます。これら2つの条件が満たされない場合は、起動インスタンスにより、複製メカニズムを使用してメモリー内にゼロからHNSWスライス・グラフが作成されます。インスタンスがクラスタに参加したときや再起動したときにVECTOR_INDEX_NEIGHBOR_GRAPH_RELOADインスタンス・パラメータがOFFに設定されている場合、HNSWスライス・グラフはリロードされません。