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 的声明