相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  MySQL 8.4 常見問題  /  MySQL 8.4 常見問題:MySQL Enterprise Thread Pool

A.15 MySQL 8.4 常見問題:MySQL Enterprise Thread Pool

A.15.1. 什麼是 Thread Pool,它解決了什麼問題?
A.15.2. Thread Pool 如何限制和管理並行會期和交易,以達到最佳效能和吞吐量?
A.15.3. Thread Pool 與用戶端連線集區有何不同?
A.15.4. 我應該何時使用 Thread Pool?
A.15.5. 有建議的 Thread Pool 設定嗎?

A.15.1.

什麼是 Thread Pool,它解決了什麼問題?

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

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

如需更多資訊,請參閱第 7.6.3 節,「MySQL Enterprise Thread Pool」

A.15.2.

Thread Pool 如何限制和管理並行會期和交易,以達到最佳效能和吞吐量?

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

如需更多資訊,請參閱第 7.6.3.3 節,「Thread Pool 操作」

A.15.3.

Thread Pool 與用戶端連線集區有何不同?

MySQL 連線集區在用戶端運作,以確保 MySQL 用戶端不會不斷地連線和中斷與 MySQL 伺服器的連線。它的設計目的是在 MySQL 用戶端中快取閒置連線,以供其他使用者在需要時使用。這樣可以最大限度地減少在向 MySQL 伺服器提交查詢時,建立和關閉連線的額外負荷和費用。MySQL 連線集區無法了解後端 MySQL 伺服器的查詢處理能力或負載。相比之下,Thread Pool 在 MySQL 伺服器端運作,旨在管理從存取後端 MySQL 資料庫的用戶端連線接收的輸入並行連線和查詢的執行。由於職責分離,MySQL 連線集區和 Thread Pool 是正交的,可以彼此獨立使用。

透過 MySQL 連接器的 MySQL 連線集區在第 31 章,「連接器與 API中有介紹。

A.15.4.

我應該何時使用 Thread Pool?

以下是一些考慮使用 Thread Pool 的最佳實踐法則

MySQL Threads_running 變數會追蹤目前在 MySQL 伺服器中執行的並行陳述式數量。如果這個變數持續超出伺服器無法最佳運作的範圍(對於 InnoDB 工作負載通常超過 40),則 Thread Pool 應該會有好處,尤其是在極端並行過載情況下。

如果您使用innodb_thread_concurrency來限制並行執行的陳述式數量,您會發現 Thread Pool 可以解決相同的問題,而且效果更好,方法是將連線指派給執行緒群組,然後根據交易內容、使用者定義的指定等對執行進行排隊。

最後,如果您的工作負載主要包含簡短查詢,Thread Pool 應該會有好處。

若要了解更多資訊,請參閱第 7.6.3.4 節,「Thread Pool 調整」

A.15.5.

有建議的 Thread Pool 設定嗎?

Thread Pool 有許多受使用者案例驅動的設定參數,會影響其效能。若要了解這些參數和調整技巧,請參閱第 7.6.3.4 節,「Thread Pool 調整」