28.1.1 MySQL 线程

MySQL 服务器创建以下线程:

  • 连接 Management 器线程在服务器侦听的网络接口上处理 Client 端连接请求。在所有平台上,一个 Management 器线程可以处理 TCP/IP 连接请求。在 Unix 上,此 Management 器线程还处理 Unix 套接字文件连接请求。在 Windows 上,Management 器线程处理共享内存连接请求,另一个 Management 器处理命名管道连接请求。服务器不会创建线程来处理它不监听的接口。例如,不支持命名管道连接的 Windows 服务器不会创建线程来处理它们。

  • 连接 Management 器线程将每个 Client 端连接与专用于该 Client 端连接的线程相关联,该线程处理身份验证并请求对该连接的处理。Management 器线程在必要时会创建一个新线程,但请先咨询线程高速缓存以查看其是否包含可用于连接的线程,以尝试避免这样做。连接结束时,如果高速缓存未满,则其线程将返回到线程高速缓存。

有关调整控制线程资源的参数的信息,请参见第 5.1.11.1 节“连接接口”

  • 在主复制服务器上,从服务器的连接与 Client 端连接的处理方式相同:每个连接的从服务器有一个线程。

  • 在从属复制服务器上,启动 I/O 线程以连接到主服务器并从中读取更新。启动 SQL 线程以应用从主服务器读取的更新。这两个线程独立运行,并且可以独立启动和停止。

  • signal 线程处理所有 signal。该线程通常还处理警报,并调用process_alarm()来强制使闲置时间过长的连接超时。

  • 如果使用InnoDB,则默认情况下将有其他读取和写入线程。这些参数的数量由innodb_read_io_threadsinnodb_write_io_threads参数控制。参见第 14.15 节“ InnoDB 启动选项和系统变量”

  • 如果使用--flush_time=val选项启动服务器,则会创建一个专用线程,每隔val *秒刷新一次所有 table。

  • 如果事件调度程序处于活动状态,则该调度程序有一个线程,而当前正在运行的每个事件都有一个线程。参见第 23.4.1 节“事件调度程序概述”

mysqladmin processlist仅显示连接,复制和事件线程。