NDB 集群内部结构  /  NDB 内核块  /  DBTUP 块

4.10 DBTUP 块

这是元组管理器,用于管理集群数据的物理存储。它由位于 storage/ndb/src/kernel/blocks/dbtup 目录中的以下文件组成

  • AttributeOffset.hpp:定义 AttributeOffset 类,该类对属性的结构进行建模,允许最多 4096 个属性,所有属性均可为空。

  • 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 中添加。