NDB 叢集內部結構  /  NDB 叢集啟動階段  /  組態讀取階段 (STTOR 階段 -1)

5.2 組態讀取階段 (STTOR 階段 -1)

READ_CONFIG_REQ 訊號提供所有核心區塊讀取組態資料的機會,這些資料儲存在所有區塊都可存取的全域物件中。資料節點中的所有記憶體配置都在此階段進行。

注意

核心區塊與 NDB 檔案系統之間的連線也在階段 0 設定。這對於讓區塊能夠輕鬆溝通表結構的哪些部分要寫入磁碟是必要的。

NDB 以兩種不同的方式執行記憶體配置。第一種是使用 allocRecord() 方法(定義在 storage/ndb/src/kernel/vm/SimulatedBlock.hpp 中)。這是傳統方法,其中記錄是使用 ptrCheckGuard 巨集(定義在 storage/ndb/src/kernel/vm/pc.hpp 中)來存取的。另一種方法是使用在 storage/ndb/src/kernel/vm/CArray.hpp 中找到的範本定義的 setSize() 方法來配置記憶體。

這些方法有時也會初始化記憶體,確保記憶體配置和初始化都是在看門狗保護下完成的。

許多區塊也會執行區塊特定的初始化,這通常需要建構鏈結串列或雙向鏈結串列(在某些情況下則是雜湊表)。

配置中使用的許多大小是在 storage/ndb/src/kernel/vm/Configuration.cpp 中找到的 Configuration::calcSizeAlt() 方法中計算的。

已為更智慧的記憶體資源池化做了一些準備。DataMemory 和磁碟記錄已屬於這個全域記憶體池。