このトピックでは、列ストアノードのメモリ内列インデックス (IMCI) のLOADING_NCI状態と、列指向データの読み取り整合性に対する影響について説明します。
列ストアノードを再起動した後、INFORMATION_SCHEMA.IMCI_INDEXES
テーブルを照会すると、一部のIMCIが一定期間LOADING_NCI状態にあることがわかります。 LOADING_NCI状態は、IMCIと行指向データ間のマッピングが再構築中であることを示します。 マッピングは、ハイブリッドトランザクション /分析処理 (HTAP) サービスのリアルタイムの高並行性データ更新機能を保証します。 LOADING_NCI状態の期間は、列指向データの量とクラスターの仕様に基づいて、数秒から数時間まで変化します。
トランザクションの更新への影響
LOADING_NCI状態のIMCIのデータは、リアルタイムで更新できます。 ただし、データの更新はIMCIにのみキャッシュされ、IMCIと行指向のデータ間のマッピングが確立されていないため、更新されたデータをリアルタイムで照会することはできません。
読み取りの一貫性への影響
LOADING_NCI状態のIMCIのデータは、引き続き読み取ることができます。 IMCIは、次の表に示すように、パラメーター設定に基づいてさまざまな一貫性レベルで読み取りサービスを提供します。
インデックスの状態 | パラメーター設定 | 可読性 (読み取り一貫性) |
LOADING_NCI | imci_enable_read_during_load_nci=ON | データを読み取ることができ、データのスナップショットを読み取ることができます。 IMCIがLOADING_NCI状態の場合、すべてのIMCIがスナップショット読み取りサービスを提供します。 |
imci_enable_read_during_load_nci=OFF | 最後のスナップショット以降にデータが追加、削除、または変更されたIMCIの場合、データを読み取ることはできません。 最後のスナップショット以降にデータが追加、削除、または変更されていないIMCIの場合、データを読み取ることができます。 | |
コミット | 非該当 | 更新されたデータはリアルタイムで読み取ることができます。 |
その他の状態 | 非該当 | データを読み取ることはできません。 |
パラメーター設定
デフォルトでは、
imci_enable_read_during_load_nci
パラメーターをONに設定した場合、すべてのIMCIがCOMMITTED状態になる前に、IMCIはスナップショット読み取りサービスを提供します。 読み取られるデータのバージョンは、列ストアノードが失敗する前の最後の完全なスナップショットです。 この場合、IMCIを使用して、IMCIがLOADING_NCI状態であるかCOMMITTED状態であるかに関係なく、複雑なクエリを高速化できます。説明imci_enable_read_during_load_nci
パラメーターをONに設定し、1つのIMCIがLOADING_NCI状態の場合、すべてのIMCIがスナップショット読み取りサービスを提供します。imci_enable_read_during_load_nci
パラメーターOFFを設定すると、IMCIはより厳格な整合性レベルで読み取りサービスを提供します。COMMITTED状態のIMCIでは、列指向データを使用して複雑なクエリを高速化し、最新の列指向データを読み取ることができます。
IMCIがLOADING_NCI状態の場合、リアルタイムデータを読み取ることはできません。 したがって、COMMITTED状態に相当する、最後のスナップショット以降にデータが追加、削除、または変更されていないIMCIについては、データを読み取ることができます。 業務要件に基づいて、列ストアノードでLOADING_NCI状態のIMCIのスナップショット読み取りサービスを有効または無効にできます。
パラメータスコープとデフォルト値
PolarDB for MySQL Enterprise EditionクラスターのバージョンがV8.0.1.29 ~ V8.0.1.1.36の場合、
imci_enable_read_during_load_nci
パラメーターはグローバルに有効です。 デフォルトでは、パラメーターはOFFに設定されています。 ただし、既存のクラスタによっては、パラメータのデフォルト値がONになる場合があります。 クラスターのこのパラメーターの値を変更した後、変更を有効にするには、クラスターを再起動する必要があります。PolarDB for MySQL Enterprise EditionクラスターのバージョンがV8.0.1.1.37以降の場合、
imci_enable_read_during_load_nci
パラメーターはセッションレベルで有効です。 デフォルトでは、パラメーターはOFFに設定されています。