扩展 MySQL 8.4  /  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 仅显示连接、复制和事件线程。