擴充 MySQL 8.4  /  MySQL 線程

第 2 章 MySQL 線程

MySQL 伺服器會建立下列線程

  • 連線管理員線程處理伺服器監聽的網路介面上的用戶端連線要求。在所有平台上,一個管理員線程處理 TCP/IP 連線要求。在 Unix 上,此管理員線程也會處理 Unix socket 檔案連線要求。在 Windows 上,一個管理員線程處理共用記憶體連線要求,另一個處理具名管道連線要求。伺服器不會建立線程來處理它未監聽的介面。例如,未啟用具名管道連線支援的 Windows 伺服器不會建立線程來處理它們。

  • 連線管理員線程會將每個用戶端連線與一個專用於處理該連線的驗證和請求處理的線程相關聯。管理員線程會在必要時建立新線程,但會先查詢線程快取以查看其中是否包含可用於連線的線程,藉此嘗試避免這樣做。當連線結束時,如果快取未滿,其線程會返回線程快取。

    如需調整控制線程資源的參數的資訊,請參閱連線介面

  • 在來源複製伺服器上,來自複本伺服器的連線會像用戶端連線一樣處理:每個已連線複本有一個線程。

  • 在複本伺服器上,會啟動一個 I/O 線程以連線到來源伺服器並從中讀取更新。會啟動一個 SQL 線程以套用從來源讀取的更新。這兩個線程獨立執行,可以獨立啟動和停止。

  • 一個訊號線程處理所有訊號。此線程通常也會處理警示,並呼叫 process_alarm() 以強制逾時閒置時間過長的連線。

  • 如果使用 InnoDB,則預設會有其他讀取和寫入線程。這些線程的數量由 innodb_read_io_threadsinnodb_write_io_threads 參數控制。請參閱 InnoDB 啟動選項和系統變數

  • 如果伺服器以 --flush_time=val 選項啟動,則會建立一個專用線程,每 val 秒清除所有表格。

  • 如果事件排程器處於作用中狀態,則排程器有一個線程,且每個目前執行的事件有一個線程。請參閱 事件排程器概述

mysqladmin processlist 僅顯示連線、複製和事件線程。