这是本地低级查询处理程序块,它管理集群数据节点本地的數據和事务,并充当两阶段提交的协调器。它负责(在事务协调器的调用下)对元组执行操作,并借助 DBACC 块(它管理索引结构)和 DBTUP(它管理元组)完成此任务。 它由以下文件组成,这些文件位于 storage/ndb/src/kernel/blocks/dblqh 中
-
Dblqh.hpp: 包含Dblqh类定义。代码本身包括以下模块-
启动/重启模块。 此模块处理以下启动阶段
片段添加和删除模块。 由数据字典用于创建新的片段和删除旧的片段。
执行模块。 此模块处理
LQHKEYREQ消息的接收以及为此请求执行的所有操作。这也包括接收各种类型的ATTRINFO和KEYINFO消息,以及与ACC和TUP的通信。日志模块。 日志模块处理日志的读写。它还负责处理系统重启,并控制
TUP和ACC中的系统重启。事务模块。 此模块处理提交和完成阶段。
TC 故障模块。 处理事务协调器中的故障。
扫描模块。 此模块包含处理特定片段扫描的代码。它在事务协调器的控制下运行,并命令
ACC对片段中的所有元组执行扫描。TUP执行必要的搜索条件以确保仅将有效元组返回给应用程序。节点恢复模块。 当节点发生故障时,使用此模块将受影响的片段复制到新的片段副本。它还关闭与故障节点的所有连接。
LCP 模块。 此模块处理
TUP和ACC中的本地检查点的执行和控制。它还与DIH交互以确定哪些全局检查点是可恢复的。全局检查点模块。 帮助
DIH发现何时 GCP 可恢复,并处理GCP_SAVEREQ消息,该消息请求LQH将给定 GCP 保存到磁盘,并在完成此操作时提供通知。-
文件处理模块。 这包括许多子模块
信号接收
正常操作
文件更改
初始启动
系统重启,阶段 1
系统重启,阶段 2
系统重启,阶段 3
系统重启,阶段 4
错误
-
DblqhInit.cpp: 初始化Dblqh记录和数据。还包括Dblqh类析构函数,用于释放这些。DblqhMain.cpp: 实现Dblqh功能(类方法)。-
此目录中还包含以下列出的文件,这些文件位于
redoLogReader子目录中,其中包含 ndb_redo_log_reader 实用程序的源代码records.cpprecords.hppredoLogFileReader.cpp
此块还处理重做日志记录,并帮助监督 DBACC、DBTUP、LGMAN、TSMAN、PGMAN 和 BACKUP 块。 它作为类 Dblqh 实现,在文件 storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp 中定义。
DBQLQH 是此块的子类型,用于查询和恢复线程,在 NDB 8.0.23 中添加。