MySQL 伺服器會建立下列線程
連線管理員線程會處理伺服器監聽的網路介面上的用戶端連線請求。在所有平台上,一個管理員線程會處理 TCP/IP 連線請求。在 Unix 上,此管理員線程也會處理 Unix socket 檔案連線請求。在 Windows 上,一個管理員線程會處理共用記憶體連線請求,而另一個會處理具名管道連線請求。伺服器不會建立線程來處理它沒有監聽的介面。例如,未啟用具名管道連線支援的 Windows 伺服器不會建立線程來處理它們。
-
連線管理員線程會將每個用戶端連線與專用於處理該連線的驗證和請求處理的線程相關聯。管理員線程會在必要時建立新線程,但會先查詢線程快取,以查看是否包含可用於連線的線程,來盡量避免這麼做。當連線結束時,如果快取未滿,其線程會返回線程快取。
如需關於調整控制線程資源的參數資訊,請參閱連線介面。
在來源複製伺服器上,來自副本伺服器的連線會像用戶端連線一樣處理:每個連線的副本都有一個線程。
在副本伺服器上,會啟動 I/O 線程以連線至來源伺服器並從中讀取更新。會啟動 SQL 線程以套用從來源讀取的更新。這兩個線程獨立執行,可以獨立啟動和停止。
訊號線程會處理所有訊號。此線程通常也會處理警示,並呼叫
process_alarm()
以強制逾時過於閒置的連線。如果使用
InnoDB
,預設情況下會有額外的讀取和寫入線程。這些線程的數量由innodb_read_io_threads
和innodb_write_io_threads
參數控制。請參閱InnoDB 啟動選項和系統變數。如果伺服器以
--flush_time=
選項啟動,則會建立專用線程以每val
val
秒清除所有表格。如果事件排程器處於作用中狀態,則排程器有一個線程,而每個目前執行的事件都有一個線程。請參閱事件排程器概述。
mysqladmin processlist 只會顯示連線、複製和事件線程。