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儲存引擎中允許的最大的執行緒併發數。
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;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2141352/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL效能最佳化之Open_Table配置引數的合理配置建議MySql
- MYSQL INNODB innodb_thread_concurrency相關引數理解MySqlthread
- OceanBase學習之路50|預設生產引數的建議配置是什麼?
- 常用的jvm配置引數 :永久區引數配置JVM
- 為什麼不建議函式有太多引數?函式
- 對Spark硬體配置的建議Spark
- 超大記憶體環境下的Oracle RAC引數設定建議記憶體Oracle
- 【建議使用】告別if,Java超好用引數校驗工具類Java
- jvm引數配置JVM
- oracle引數配置Oracle
- JavaWeb引數配置JavaWeb
- Spring Boot 學習系列(11)—tomcat引數配置建Spring BootTomcat
- Mysql重要配置引數的整理MySql
- Spark的相關引數配置Spark
- kafka生產者Producer引數設定及引數調優建議-kafka 商業環境實戰Kafka
- Ceph配置引數分析
- Oracle rman 配置引數Oracle
- ORACLE 配置event引數Oracle
- mosquitto 引數配置UI
- 配置網路引數
- nginx 常見引數以及重定向引數配置Nginx
- Nginx的gzip配置引數說明Nginx
- Nginx常用配置引數的含義Nginx
- ORACLE初始化引數的配置Oracle
- 每個月的sql引數配置SQL
- 再論 golang 環境配置建議Golang
- 對引進IT技術書籍的一點建議
- kafka消費者Consumer引數設定及引數調優建議-kafka 商業環境實戰Kafka
- MySQL:一個innodb_thread_concurrency設定不當引發的故障MySqlthread
- hadoop YARN配置引數剖析—MapReduce相關引數HadoopYarn
- Hystrix 配置引數全解析
- Laravel 配置郵箱引數Laravel
- APM Java agent 引數配置Java
- Elasticsearch 引數配置說明Elasticsearch
- SAP配置系統引數
- kafka 引數配置說明Kafka
- DataGuard引數配置詳解
- struts配置引數詳解