您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關innodb_thread_concurrency參數怎么配置,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
innodb_thread_concurrency:
INNODB存儲引擎中允許的最大的線程并發數。
InnoDB使用操作系統線程來處理用戶事務請求,它是這樣工作的:當InnoDB收到一個用戶的請求時,如果已經超過innodb_thread_concurrency預先設置的并發線程數量,那么就會按照innodb_thread_sleep_delay預先設定的值休眠N秒,之后再次嘗試連接,重試兩次的機制是為了減少CPU上下文切換的次數,以降低CPU消耗。如果請求被接受了,則會獲得一個innodb_concurrency_tickets默認500次的通行證,在這些次數用完之前,該線程重新請求時無須再進行前面所說的innodb_thread_concurrency的檢查。如果還沒有被接受,那么就會進入隊列中,直到最終被處理掉。
該值建議設置如下:
當并發用戶線程數量小于64,建議設置innodb_thread_concurrency=0;
如果負載不穩定,時而低,時而高到峰值,建議先設置innodb_thread_concurrency=128,并通過不斷的降低這個參數,96, 80, 64等等,直到發現能夠提供最佳性能的線程數,例如,假設系統通常有40到50個用戶,但定期的數量增加至60,70,甚至200。你會發現,性能在80個并發用戶設置時表現穩定,如果高于這個數,性能反而下降。在這種情況下,建議設置innodb_thread_concurrency參數為80,以避免影響性能;
如果DB服務器上還允許其他應用,需要限制mysql的線程使用情況,則可以設置可分配給DB的線程數,但是不建議DB上跑其他應用,也不建議這么設置,因為這樣可能導致數據庫沒有對硬件最優使用;
設置過高值,可能會因為系統資源內部爭奪導致性能下降;
在大多數情況下,最佳的值是小于并接近虛擬CPU的個數;
定期監控和分析DB,因為隨著數據庫負載的變化,業務的增加,innodb_thread_concurrency也需要動態的調整。
如果一個工作負載中,并發用戶線程的數量小于64,建議設置innodb_thread_concurrency=0;
關于“innodb_thread_concurrency參數怎么配置”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。