NDB Cluster 內部結構  /  NDB 核心區塊  /  DBTUP 區塊

4.10 DBTUP 區塊

這是元組管理器,負責管理叢集資料的實體儲存。它由以下位於 storage/ndb/src/kernel/blocks/dbtup 目錄中的檔案組成:

  • AttributeOffset.hpp:定義 AttributeOffset 類別,該類別模擬屬性的結構,允許最多 4096 個屬性,所有屬性均可為 null。

  • DbtupDiskAlloc.cpp:處理磁碟空間的範圍分配和釋放。

  • DbtupIndex.cpp:實作使用排序索引讀寫元組的方法。

  • DbtupScan.cpp:實作元組掃描的方法。

  • tuppage.cpp:處理寫入元組的頁面分配。

  • tuppage.hpp:定義元組的固定大小和可變大小資料頁面的結構。

  • DbtupAbort.cpp:包含終止失敗元組操作的常式。

  • DbtupExecQuery.cpp:處理元組的查詢執行和從中讀取。

  • DbtupMeta.cpp:處理 Dbtup 類別的表格操作。

  • DbtupStoredProcDef.cpp:用於新增和刪除程序模組。

  • DbtupBuffer.cpp:處理元組操作的讀/寫緩衝區。

  • DbtupFixAlloc.cpp:從附加到片段的頁面集合中分配和釋放固定大小的元組。固定大小是針對每個片段設定的;每個片段只能有一個這樣的值。

  • DbtupPageMap.cppDbtup 用於將邏輯頁面 ID 對應到實體頁面 ID 的常式。此對應需要片段 ID 和邏輯頁面 ID 來提供實體 ID。 Dbtup 的此部分是片段記錄上特定變數集合的獨佔使用者;它也是頁面範圍結構(在 Dbtup.hpp 中定義的 PageRange 結構)的獨佔使用者。

  • DbtupTabDesMan.cpp:此檔案包含組成表格描述符記憶體管理器的常式。每個表格都有一個描述符,它是一個連續的資料字組陣列,並且使用 夥伴演算法從全域陣列中分配,每個 2N 個字組都有可用的清單。

  • Notes.txt:包含開發人員關於元組、元組操作和元組版本控制的一些實作註解。

  • Undo_buffer.hpp:定義 Undo_buffer 類別,用於儲存可能需要回滾的操作。

  • Undo_buffer.cpp:實作一些必要的 Undo_buffer 方法。

  • DbtupCommit.cpp:包含用於將元組操作提交到磁碟的常式。

  • DbtupGen.cpp:此檔案包含 Dbtup 初始化常式。

  • DbtupPagMan.cpp:此檔案實作頁面記憶體管理器的 夥伴演算法。PagMan 在片段缺乏足夠的內部頁面空間來容納它們被請求儲存的所有資料時被調用。它也在片段將頁面空間釋放回可用區域時被調用。

  • DbtupTrigger.cpp:此檔案中包含的常式執行 NDB 內部觸發器的處理。

  • DbtupDebug.cpp:僅用於偵錯目的。

  • Dbtup.hpp:包含 Dbtup 類別定義。還定義了許多基本結構,例如元組掃描、磁碟分配單元、片段記錄等等。

  • DbtupRoutines.cpp:實作讀取屬性的 Dbtup 常式。

  • DbtupVarAlloc.cpp

  • test_varpage.cpp:用於驗證可變大小頁面操作的簡單測試程式。

此區塊還會監控元組的變更。

DBQTUP 是此區塊的子類型,用於查詢和復原執行緒,在 NDB 8.0.23 中新增。