Extending MySQL 8.0  /  MySQL Threads

Chapter 2 MySQL Threads

The MySQL server creates the following threads:

  • Connection manager threads handle client connection requests on the network interfaces that the server listens to. On all platforms, one manager thread handles TCP/IP connection requests. On Unix, this manager thread also handles Unix socket file connection requests. On Windows, a manager thread handles shared-memory connection requests, and another handles named-pipe connection requests. The server does not create threads to handle interfaces that it does not listen to. For example, a Windows server that does not have support for named-pipe connections enabled does not create a thread to handle them.

  • Connection manager threads associate each client connection with a thread dedicated to it that handles authentication and request processing for that connection. Manager threads create a new thread when necessary but try to avoid doing so by consulting the thread cache first to see whether it contains a thread that can be used for the connection. When a connection ends, its thread is returned to the thread cache if the cache is not full.

    For information about tuning the parameters that control thread resources, see Connection Interfaces.

  • On a source replication server, connections from replica servers are handled like client connections: There is one thread per connected replica.

  • On a replica server, an I/O thread is started to connect to the source server and read updates from it. An SQL thread is started to apply updates read from the source. These two threads run independently and can be started and stopped independently.

  • A signal thread handles all signals. This thread also normally handles alarms and calls process_alarm() to force timeouts on connections that have been idle too long.

  • If InnoDB is used, there will be additional read and write threads by default. The number of these are controlled by the innodb_read_io_threads and innodb_write_io_threads parameters. See InnoDB Startup Options and System Variables.

  • If the server is started with the --flush_time=val option, a dedicated thread is created to flush all tables every val seconds.

  • If the event scheduler is active, there is one thread for the scheduler, and a thread for each event currently running. See Event Scheduler Overview.

mysqladmin processlist only shows the connection, replication, and event threads.