NDB Cluster 内部  /  NDB 内核块  /  DBLQH 块

4.7 DBQLQH 块

这是本地低级查询处理程序块,它管理集群数据节点本地的數據和事务,并充当两阶段提交的协调器。它负责(在事务协调器的调用下)对元组执行操作,并借助 DBACC 块(它管理索引结构)和 DBTUP(它管理元组)完成此任务。 它由以下文件组成,这些文件位于 storage/ndb/src/kernel/blocks/dblqh

  • Dblqh.hpp: 包含 Dblqh 类定义。代码本身包括以下模块

    • 启动/重启模块。  此模块处理以下启动阶段

      • 启动阶段 1。  加载块引用和处理器 ID

      • 启动阶段 2。  初始化块内的所有记录;连接 LQHACCTUP

      • 启动阶段 4。  将每个 LQH 与数据库系统中的其他每个 LQH 连接。对于初始启动,创建片段日志文件。对于系统重启或节点重启,打开片段日志文件并查找日志文件的末尾。

    • 片段添加和删除模块。  由数据字典用于创建新的片段和删除旧的片段。

    • 执行模块。  此模块处理 LQHKEYREQ 消息的接收以及为此请求执行的所有操作。这也包括接收各种类型的 ATTRINFOKEYINFO 消息,以及与 ACCTUP 的通信。

    • 日志模块。  日志模块处理日志的读写。它还负责处理系统重启,并控制 TUPACC 中的系统重启。

    • 事务模块。  此模块处理提交和完成阶段。

    • TC 故障模块。  处理事务协调器中的故障。

    • 扫描模块。  此模块包含处理特定片段扫描的代码。它在事务协调器的控制下运行,并命令 ACC 对片段中的所有元组执行扫描。 TUP 执行必要的搜索条件以确保仅将有效元组返回给应用程序。

    • 节点恢复模块。  当节点发生故障时,使用此模块将受影响的片段复制到新的片段副本。它还关闭与故障节点的所有连接。

    • LCP 模块。  此模块处理 TUPACC 中的本地检查点的执行和控制。它还与 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

此块还处理重做日志记录,并帮助监督 DBACCDBTUPLGMANTSMANPGMANBACKUP 块。 它作为类 Dblqh 实现,在文件 storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp 中定义。

DBQLQH 是此块的子类型,用于查询和恢复线程,在 NDB 8.0.23 中添加。