MySQL 5.7: 数据库THD连接管理重构

WL#6407中,其目的是为了解决shutdown mysql实例的问题,不过主要的代码修改却是重构了对数据库连接相关的管理代码重构。本文的目的主要是梳理这些相关的新增代码。

下图是各个新增类直接的关系及简单描述:

thd_mange

1.新增文件:mysqld_thd_manager.cc  mysqld_thd_manager.h, 移除文件sql/global_threads.h

2. 新增THD管理类:Global_THD_manager, 用于管理所有已经注册的线程THD。

3. 针对每个THD,区分两种操作类型,一种是查找类,一种是操作类,分别对应基类Do_THD_Impl 及Find_THD_Impl

通过接口函数来进行调用各个子类

Global_THD_manager::do_for_all_thd_copy  先拷贝thd链表,再对拷贝后的thd执行操作
Global_THD_manager::do_for_all_thd:直接在加锁状态下,操作链表上的THD
Global_THD_manager::find_thd:根据某些条件找到对应THD对象

所有的Do_THD_Impl和Find_THD_Impl的子类,都要重载operator(),以定义对应的调用行为。

4. 从worklog拷贝过来的流程图:

   mysqld main thread

|

|

init_resources(mutex,etc)

|

| – – – – – – – – – – –  – ->create signal thread

|                                                |

|                               Wait for signal

create_handlers/slaves/etc        |

|                             close_connections()

|                                                 |

join signal thread<- – – – – exit thread

|

cleanup_resources()

|

mysqld_exit()

 

相关链接:

原创文章,转载请注明: 转载自Simple Life

本文链接地址: MySQL 5.7: 数据库THD连接管理重构

Post Footer automatically generated by wp-posturl plugin for wordpress.


Comments

Leave a Reply

Your email address will not be published. Name and email are required


Current month ye@r day *