这是本地低级查询处理程序块,它管理集群数据节点本地的數據和事务,并充当两阶段提交的协调器。它负责(在事务协调器的调用下)对元组执行操作,并借助 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.cpp
records.hpp
redoLogFileReader.cpp
此块还处理重做日志记录,并帮助监督 DBACC
、DBTUP
、LGMAN
、TSMAN
、PGMAN
和 BACKUP
块。 它作为类 Dblqh
实现,在文件 storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp
中定义。
DBQLQH
是此块的子类型,用于查询和恢复线程,在 NDB 8.0.23 中添加。