移动云海山数据库(He3DB)MySQL关键类之THD

2023年 12月 29日 36.9k 0

1.整体描述

在MySQL源码注释中,THD是对线程描述的数据结构,每个客户端连接到服务器时都会创建一个单独的线程类(THD)对象为做对线程/连接的整体的描述。

2.继承关系

父类1:MDL_context_owner 抽象接口代码,用来实现MDL模块和THD以及服务端代码分离。主要有元数据锁的相关接口,含控制和信息通知等。
父类2:Query_arena 看它的元素定义Item * m_item_list,它内部一定维护着一个很大的列表 而Item又继承自Parse_tree_node,所以它内部一定维护着Query语句(存储过程)的相关解析后的元素,也就是抽象语法树的结节。
父类3:Open_tables_state 该类保存线程有关已打开和锁定的表的状态,同时维护了表的信息和和锁信息。其提供了压入和弹出两个状态接口函数来操作这两类状态。

3.锁相关

MDL_context 元数据锁的上下文,维护元数据的锁,mdl.h代码中有其详细描述:元数据库锁的上下文信息,每个server都有这样一个上下文。


THR_LOCK_INFO 线程锁信息,thr_lock.h代码中有其详细描述:拥有锁的线程的描述。此结构的实例的地址用于唯一标识线程。

4.接口语义相关

Vio:与客户交互的IO相关,channel_info.h代码中定义的typedef结构体


LEX:语法解析后的parsed树,解析树描述符

private的lex类型变量用于保存常规(未准备好的)查询的解析树的lex。 而对于准备和存储过程语句,我们为每个新查询使用自己的lex实例,而对于传统语句,我们重用相同的lex。

Query_plan中的lex,用于topmost 的声明

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论