innoDb 的多執行緒併發調優

2021-06-02 21:48:43 字數 747 閱讀 5904

innodb  本來就好似對高併發設計的,但是不是能應對所有的高併發,你可以對部分就像調優

首先說明3個引數

innodb_thread_concurrency  :併發執行緒數量

innodb _thread_sleep_delay

innodb_concurrency_tickets

innodb用自己的執行緒排程機制來控制線程如何進入innodb  核心工作,並執行相關的操作。  innodb_thread_concurrency變數就控制了進入核心的執行緒數量。0表示不限制進入核心的數量。如果innodb核心中已經有很多執行緒進入,達到一定數量後就不能再進入了。innodb使用了一種兩階段的方式控制線程進入核心,這終機制減少了作業系統因為執行緒之間的上下文切換帶來的開銷。

2階段如下

執行緒首先睡眠innodb _thread_sleep_delay所規定的時間(微妙),然後再次嘗試進入,如果還是不能進入,就會就進入乙個等待佇列並且把控制許可權交給作業系統。

一旦執行緒進入了核心,他就會得到乙個去定的資料作為憑證,它再次進入核心時因為憑證就會減少一些操作,innodb_concurrency_tickets變數就是控制了憑據的數量,憑據是對執行緒授權。

同時 innodb_commit_concurrency也控制了多執行緒併發提交的數量。如果 innodb_thread_concurrency  設定的有點大innodb_commit_concurrency應該做出相應的調整,否則會造成大量執行緒阻塞。

關於多執行緒併發可以參考該文

多執行緒高併發調優

1.首先理解幾個多執行緒的概念 1 執行緒安全 保證執行緒的排程順序不變,以免引起資料不一致問題 2 執行緒同步 幾個執行緒協調同步,當幾個執行緒共享同乙份資源時,調整執行順序,當前乙個執行緒完成時,再執行下乙個 3 何為高併發 指程式在短時間內集中處理大量操作的情況,現實場景如 秒殺活動,搶票活動...

Spring Cloud 併發調優

測試介面 登入 鏈路呼叫 nginx zuul server servicea,serviceb,servicec,serviced 因為登入介面牽涉到一系列的加密校驗 許可權角色 賬號密碼驗證,所以 zuul server 路由之後,會呼叫很多個微服務來獲取使用者資訊。伺服器的話都是用docker...

python併發程式設計調優 python併發程式設計

併發程式設計是我們程式設計中常用的優化程式效能的手段,能提高cpu的使用率。一般使用是多執行緒,多程序,協程 一 python的全域性解釋鎖gil 我們目前跑的python程式大多數都是在cpython上執行的。cpython是有乙個全域性解釋鎖,具體什麼意思,可以兩個方面理解 在同一時刻,只能執行...