MySQL 数据库是单进程的服务,其包含了众多不同功能的实现模块;这些模块功能是以线程的方式,在服务中运行的。以下简单介绍其中的线程类别:
1、连接管理器线程
处理服务器监听的网络接口上的客户端连接请求。
在所有平台上,一个管理器线程处理TCP / IP连接请求。
在Unix上,这个管理器线程还处理Unix套接字文件连接请求。
在Windows上,管理器线程处理共享内存连接请求,另一个处理命名管道连接请求。
2、连接线程
连接管理器线程将每个客户端连接与专用于它的线程关联,以处理该连接的身份验证和请求处理。
管理器线程在必要时创建一个新的线程,但是尝试通过首先查询线程缓存来查看它是否包含可用于连接的线程。
当连接结束时,如果缓存未满,则其线程返回到线程缓存。
3、主从复制中的Master线程
在主复制服务器上,来自从属服务器的连接与客户端连接一样处理:每个连接的从属节点有一个线程。
4、主从复制中Slave线程
在从属复制服务器上,启动I/O线程以连接到主服务器并从中读取更新。启动SQL线程以应用从主服务器读取的更新。这两个线程独立运行,可以独立启动和停止。
5、信号线程处理所有信号
这个线程通常也会处理警报和呼叫 process_alarm(),强制超时的连接超时。
6、InnoDB中的读写线程
如果InnoDB使用,默认情况下会有额外的读写线程。这些数量由innodb_read_io_threads和 innodb_write_io_threads 参数控制 。请参见14.14节,“InnoDB启动选项和系统变量”。
7、刷新表
如果服务器使用该 选项启动, 则会创建一个专用线程以每秒刷新所有表。 –flush_time=valval
8、事件调度
如果事件调度程序处于活动状态,则调度程序有一个线程,当前正在运行的每个事件都有一个线程。请参见第23.4.1节“事件调度程序概述”。
mysqladmin processlist只显示连接,复制和事件线程。