相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  MySQL 9.0 常見問題  /  MySQL 9.0 常見問題:MySQL Enterprise 執行緒池

A.15 MySQL 9.0 常見問題:MySQL Enterprise 執行緒池

A.15.1. 什麼是執行緒池,它解決了什麼問題?
A.15.2. 執行緒池如何限制和管理並行會話和交易,以實現最佳效能和吞吐量?
A.15.3. 執行緒池與客戶端連線池有何不同?
A.15.4. 我應該何時使用執行緒池?
A.15.5. 有推薦的執行緒池配置嗎?

A.15.1.

什麼是執行緒池,它解決了什麼問題?

MySQL 執行緒池是一個 MySQL 伺服器外掛程式,它擴展了 MySQL 伺服器的預設連線處理功能,以限制並行執行的陳述式/查詢和交易數量,以確保每個都有足夠的 CPU 和記憶體資源來完成其任務。對於 MySQL 9.0,執行緒池外掛程式包含在商業產品 MySQL Enterprise Edition 中。

MySQL 伺服器中的預設執行緒處理模型使用每個客戶端連線一個執行緒來執行陳述式。隨著越來越多的客戶端連線到伺服器並執行陳述式,整體效能會下降。執行緒池外掛程式提供了一種替代的執行緒處理模型,旨在減少開銷並提高效能。執行緒池外掛程式透過有效管理大量客戶端連線的陳述式執行執行緒來提高伺服器效能,尤其是在現代多 CPU/核心系統上。

如需更多資訊,請參閱 章節 7.6.3,「MySQL Enterprise 執行緒池」

A.15.2.

執行緒池如何限制和管理並行會話和交易,以實現最佳效能和吞吐量?

執行緒池使用 分而治之 的方法來限制和平衡並行性。與 MySQL 伺服器的預設連線處理不同,執行緒池會分離連線和執行緒,因此連線和執行從這些連線接收到的陳述式的執行緒之間沒有固定的關係。然後,執行緒池會在可配置的執行緒群組中管理客戶端連線,在這些群組中,它們會根據提交以完成的工作性質進行優先排序和排隊。

如需更多資訊,請參閱 章節 7.6.3.3,「執行緒池操作」

A.15.3.

執行緒池與客戶端連線池有何不同?

MySQL 連線池在客戶端操作,以確保 MySQL 客戶端不會不斷連線和斷開與 MySQL 伺服器的連線。它旨在快取 MySQL 客戶端中的閒置連線,以供其他使用者在需要時使用。這最大限度地減少了在將查詢提交到 MySQL 伺服器時建立和關閉連線的開銷和成本。MySQL 連線池無法了解後端 MySQL 伺服器的查詢處理能力或負載。相比之下,執行緒池在 MySQL 伺服器端操作,旨在管理從存取後端 MySQL 資料庫的客戶端連線接收到的傳入並行連線和查詢的執行。由於職責分離,MySQL 連線池和執行緒池是正交的,可以彼此獨立使用。

第 31 章,《連接器和 API》》涵蓋了透過 MySQL 連接器的 MySQL 連線池。

A.15.4.

我應該何時使用執行緒池?

以下是一些考慮最佳執行緒池使用案例的經驗法則

MySQL Threads_running 變數會追蹤目前在 MySQL 伺服器中執行的並行陳述式數量。如果此變數始終超過伺服器無法最佳運作的區域(通常對於 InnoDB 工作負載會超過 40),則執行緒池應該會很有益,尤其是在極端的並行超載情況下。

如果您正在使用 innodb_thread_concurrency 來限制並行執行的陳述式數量,您應該會發現執行緒池透過將連線指派給執行緒群組,然後根據交易內容、使用者定義的指定等來排隊執行,從而更好地解決相同的問題。

最後,如果您的工作負載主要包含短查詢,則執行緒池應該會很有益。

如需了解更多資訊,請參閱 章節 7.6.3.4,「執行緒池調整」

A.15.5.

有推薦的執行緒池配置嗎?

執行緒池具有許多使用者案例驅動的配置參數,這些參數會影響其效能。若要了解這些參數以及有關調整的提示,請參閱 章節 7.6.3.4,「執行緒池調整」