HNSW RAC複製
Oracle Real Application Clusters (Oracle RAC)または非RAC環境での索引作成、索引再移入またはインスタンス起動時に、Hierarchical Navigable Small World (HNSW)索引がどのように移入されるかについて説明します。
RAC環境でのHNSW索引の作成
現在、Oracle RAC環境のHNSW索引は、集中モードで作成されます。次の図は、Oracle RAC環境でのHNSW索引作成のワークフローを示しています:
-
HNSW索引を作成するRACインスタンスは、ディスク上にHNSW ROWIDとVIDのマッピング表を作成します。「HNSWベクトル索引のオプティマイザ計画」で説明されているように、この表は、オプティマイザが特定の最適化計画を実行するために必要です。
-
デフォルトでは、最初の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スライス・グラフは古いHNSWスライス・グラフと同一にはなりません。
リロードの動作は、VECTOR_INDEX_NEIGHBOR_GRAPH_RELOADパラメータによって制御されます。インスタンスがクラスタに参加したときや再起動したときにVECTOR_INDEX_NEIGHBOR_GRAPH_RELOADインスタンス・パラメータがRESTART (デフォルト設定)に設定されている場合、および完全チェックポイントが存在し現在のインスタンスのSCNに比べ古すぎるとみなされない場合には、起動インスタンスによってそれが使用されて、そのHNSWスライス・グラフがメモリー内に作成されます。これら2つの条件が満たされない場合は、起動インスタンスにより、複製メカニズムを使用してメモリー内にゼロからHNSWスライス・グラフが作成されます。インスタンスがクラスタに参加したときや再起動したときにVECTOR_INDEX_NEIGHBOR_GRAPH_RELOADインスタンス・パラメータがOFFに設定されている場合、HNSWスライス・グラフはリロードされません。
親トピック: インメモリー近傍グラフ・ベクトル索引について

