mysql 沒有使用多個 cpu

mysql 沒有使用多個 cpu

我們的MySQL伺服器最近一直在使用大量的CPU(它多次達到100%並保持一段時間),我注意到CPU負載全部集中在一個CPU的一個核心上。我希望將其傳播到我的伺服器上的所有 4 個伺服器上。

我一直在調整 MySQL 設定以使用更多的 ram 和更少的 cpu,但它仍然偶爾會達到非常高的 CPU 使用率。

似乎有關該主題的所有內容都涉及 thread_concurrency (我讀過的只是Solaris 的設定)。我可以在 Linux 中做什麼?

謝謝。

答案1

你是對的,thread_concurrency 僅適用於 Solaris,並且在 MySQL 5.6 及以上版本中已棄用。我認為 MyISAM 不能使用多核心/CPU。要充分利用硬件,請使用 InnoDB。

可能會幫助你更好地理解事情。

答案2

此變數的正確值取決於環境和工作負載。您需要嘗試一系列不同的值來確定哪個值適合您的應用程式。建議值為 CPU 數量加上磁碟數量的 2 倍。

此變數的範圍是0到1000。從5.0.19開始,您可以透過將該值設為0來停用執行緒並發檢查。

http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_thread_concurrency

答案3

為了簡單起見,無論 InnoDB 引擎有多核,MySQL 中執行的每個查詢都只使用 1 個 CPU 核心。

當您同時執行許多不同的查詢並且對CPU 和資料要求很高時,MySQL 內的所有多核心最佳化都會有所幫助,但如果您有一些需要幾分鐘/幾小時才能完成的大型查詢,則它將始終僅使用1 個CPU 核心。 (如果你一定有這樣的疑問,你應該購買CPU速度更高、核心數量更少的伺服器。)

相關內容