这就是元组管理器,负责管理集群数据的物理存储。它由目录中的以下文件组成
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.cpp
:用于Dbtup
将逻辑页面 ID 映射到物理页面 ID 的例程。映射需要片段 ID 和逻辑页面 ID 来提供物理 ID。这部分Dbtup
是片段记录上某组变量的独占用户;它也是页面范围结构(在 中PageRange
定义的结构Dbtup.hpp
)的独占用户。DbtupTabDesMan.cpp
:此文件包含构成表描述符内存管理器的例程。每个表都有一个描述符,它是一个连续的数据字数组,使用“ buddy ”算法从全局数组中分配,每 2 N个字都有一个空闲列表。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 中添加。