全部產品
Search
文件中心

PolarDB:LOADING_NCI狀態說明及其影響

更新時間:Oct 19, 2024

本文介紹了列存節點上的LOADING_NCI狀態及其對列存讀一致性的影響。

重啟列存節點之後,在一段時間內,您可能會通過information_schema.imci_indexes表看到有一部分列存索引處於LOADING_NCI狀態,該狀態表示當前索引正在重建列存索引與行存的映射關係。該映射關係用於HTAP服務的即時高並發資料更新能力中。根據具體列存資料量的大小和叢集的規格,LOADING_NCI狀態期間為幾秒到數小時不等。

LOADING_NCI狀態對事務更新的影響

處於LOADING_NCI狀態的索引依然可以即時更新列存索引中的資料,但由於該狀態下列存索引與行存的映射沒有完全建立,因此,資料更新僅緩衝在列存索引上,您將無法即時查詢更新後的資料。

LOADING_NCI狀態對讀一致性的影響

處於LOADING_NCI狀態的索引中的資料依然可讀,列存索引會根據您不同的參數配置提供不同的一致性層級的讀服務。詳情見下表:

索引狀態

參數配置

可讀性(讀一致性)

LOADING_NCI

imci_enable_read_during_load_nci=ON

可讀,快照讀(全域任一列存索引處於該狀態,則對所有列存索引提供快照讀服務)。

imci_enable_read_during_load_nci=OFF

自上一個快照後存在資料變更(增刪改)的列存索引不可讀、自上一個快照後不存在資料變更的列存索引可讀。

COMMITTED

N/A

可讀,會讀取即時更新的資料。

其他狀態

N/A

不可讀。

參數配置說明

  • 若列存索引中的imci_enable_read_during_load_nci參數配置為ON,則在全部的列存索引狀態由LOADING_NCI變為COMMITTED狀態之前,列存索引預設提供快照讀服務,讀取的資料版本為列存宕機前的最後一次完整快照。此時,無論當前的列存索引狀態處於LOADING_NCI還是COMMITTED,均支援通過列存索引加速複雜查詢。

    說明

    imci_enable_read_during_load_nci參數配置為ON後,只要全域存在一個LOADING_NCI狀態的列存索引,就會提供快照讀服務。

  • 若列存索引中的imci_enable_read_during_load_nci參數配置為OFF。則列存索引會提供更嚴格的一致性讀服務。即:

    • 對於COMMITTED狀態的列存索引,可以通過列存資料加速複雜查詢,並讀取最新的列存資料。

    • 對於LOADING_NCI狀態的列存索引,由於索引無法讀取最新即時資料,因此只能讀行存,特別的,自上一個快照後不存在資料變更的列存索引,等同於COMMITTED狀態的列存索引,可以提供列存查詢。使用者可以根據具體的業務情境選擇是否開啟或關閉處於LOADING_NCI狀態下的列存節點的快照讀服務。

參數層級及預設值說明

  • 企業版叢集的版本位於8.0.1.1.29至8.0.1.1.36之間時,imci_enable_read_during_load_nci參數為全域層級的參數。預設值為OFF,但存量叢集中的預設值可能為ON。修改該參數值後,需要重啟叢集才會生效。

  • 企業版叢集的版本為8.0.1.1.37及之後的版本時,imci_enable_read_during_load_nci參數為Session層級的參數。預設值為OFF