mysql連線不僅能通過網路方式,還可以通過命名管道的方式,不論是哪種方式連線mysql,在mysql中都是通過執行緒的方式管理所有客戶端請求的。每乙個客戶端連線都會有乙個與之對應的連線線程。在mysql中實現了乙個thread cache池,將空閒的連線線程存放其中,而不是完成請求後就銷毀。這樣,當有新的連線請求時,mysql首先會檢查thread cache中是否存在空閒連線線程,如果存在則取出來直接使用,如果沒有空閒連線線程,才建立新的連線線程。具體引數:
thread_cache_size:thread cache池中應該存放的連線線程數。
thread_stack:每個連線線程被建立時,mysql給它分配的記憶體大小。當mysql建立乙個新的連線線程時,需要給它分配一定大小的記憶體堆疊空間,以便存放客戶端的請求的query及自身的各種狀態和處理資訊。
如圖,系統設定了thread cache池最多將快取25個連線線程,每個連線線程建立之初,系統分配192kb的記憶體堆疊給它。
檢視系統被連線的次數及當前系統中連線線程的狀態值
show status like 'connections';
show status like '%thread%';
系統啟動到現在共接受到客戶端的連線7次,共建立了1個連線線程,當前有1個連線線程處於和客戶端連線的狀態,而1個連線狀態的執行緒中只有乙個處於 active 狀態,即只有乙個正在處理客戶端提交的請求,。而在thread cache池中共快取了0個連線線程。
thread cache 命中率:
thread_cache_hit = (connections - threads_created) / connections * 100%;
一般在系統穩定執行一段時間後,thread cache命中率應該保持在90%左右才算正常。
mysql後台執行緒 MySQL中的後台執行緒
mysql5.7有以下9組後台執行緒 分別為1個主線程,4組io執行緒,1個鎖線程,1個錯誤執行緒,1個purge執行緒,1個page cleaner執行緒。master thread 主要負責將髒快取頁重新整理到資料檔案中,執行purge操作,觸發檢查點,合併插入緩衝區等。insert buffe...
mysql的優化 MySQL優化
一 sql語句優化 1 使用limit對查詢結果的記錄進行限定 2 避免select 將需要查詢的字段列出來 3 使用連線 join 來代替子查詢 4 拆分大的delete或insert語句 二 選擇合適的資料型別 1 使用可存下資料的最小的資料型別,整型 date,time char,varcha...
mysql 隨機優化 mysql 優化
mysql優化包括兩方面,一方面是sql優化,另一方面是資料庫配置優化 一 sql優化 1.優化資料型別 盡量將字段設定為 not null,如果你要儲存null,手動去設定它,而不是把它設為預設值 盡量可能的使用更小的字段,但也不要太過執著減小資料型別,要為以後的程式拓展預留一定的空間 盡量少用v...