扩展 MySQL 9.0  /  MySQL 线程

第 2 章 MySQL 线程

MySQL 服务器创建以下线程:

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

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

    有关调整控制线程资源的参数的信息,请参阅连接接口

  • 在源复制服务器上,来自副本服务器的连接像客户端连接一样处理:每个连接的副本都有一个线程。

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

  • 一个信号线程处理所有信号。此线程通常还处理警报并调用process_alarm() 以强制对空闲时间过长的连接超时。

  • 如果使用了InnoDB,默认情况下将会有额外的读写线程。这些线程的数量由innodb_read_io_threadsinnodb_write_io_threads 参数控制。请参阅InnoDB 启动选项和系统变量

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

  • 如果事件调度程序处于活动状态,则调度程序有一个线程,每个当前正在运行的事件也有一个线程。请参阅事件调度程序概述

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