这里用单独的一篇介绍THD对象,目前看来THD对象是线程处理用户语句请求的核心类。然而该类实在是太大了,单单类的定义就差不多有了3500行。因此,这里不能够完全理解透,所以介绍得也不会全。望谅解~
1. 简单说明
THD没有查找到具体是什么的缩写,具体的代码定义是在mysql-server-8.0/sql/sql_class.h中,官方代码说明文档是在下面链接中。https://dev.mysql.com/doc/dev/mysql-server/latest/classTHD.htmldev.mysql.com
这个类给的官方说明是:For each client connection we create a separate thread with THD serving as a thread/connection descriptor
暂且翻译为“线程描述类”(THread Descriptor)。
2. THD与类/结构的依赖图
该类与其他很多类都有直接或间接引用关系,具体的如下图所示(该图也不全,只是个人感觉比较重要的列出来了)。图中,空心三角箭头表示继承关系;实心四角箭头表示组合关系。THD相关类(有水印)
3. THD依赖类/结构分类
为了方便介绍,将与THD相关类分成以下几个部分,分类是按照个人理解分的,不一定正确:
3.1 父类/接口类
THD类继承三个父类,分别是MDL_context_owner,Query_arena,Open_tables_state。MDL_context_owner:抽象类,主要与Metadata Lock 拥有者相关的接口,包括元数据边界