1. 程式人生 > 其它 >mysql連線引數配置

mysql連線引數配置

技術標籤:mysqlmysql連線引數配置mysql連線引數配置詳解

前言

mysql效能優化涉及到很多方面,在上一篇中通過explain打印出sql的執行計劃可以作為指導開發人員進行sql優化是一個方面,另外,mysql自身的引數配置也很多,比如連線引數(connection),查詢快取等,合理的設定mysql引數對於效能優化也是非常重要的

下面對mysql的連線引數,即connection相關的引數配置做簡單的說明

mysql引數設定的兩種方式

在實際配置mysql引數時,通常有2種做法,可以通過my.cnf(linux)進行設定(持久化設定),也可以通過命令,set global 引數名 = 引數值(只對當前連線會話生效)的方式設定

檢視當前mysql的connection資訊

show VARIABLES like '%connection%';

在這裡插入圖片描述

預設情況下,mysql的連線數量為151個,通過set的方式設定下,

set GLOBAL MAX_CONNECTIONS=200;

在這裡插入圖片描述
如果在my.cnf進行設定
在這裡插入圖片描述
配置完畢後,重啟下mysql服務,connections連線數也變成300

systemctl restart mysqld.service

在這裡插入圖片描述

總結來說:

  • 對當前的連線,連線數優先順序為 ,set > 配置,值得注意的是,部分引數在set global並不會立即生效,而是需要重新建立連線後才有效
  • set global 在mysql執行過程中會一直生效,直到mysql服務關閉

connection常用引數設定

  • 檢視最大連線數

    最大連線數,代表當前資料庫同時允許的最大連線數量,連線的狀態通常有2種,sleep / query,sleep代表處於閒置的狀態,query代表正處於任務處理的狀態

    sleep + query 連線的總量不能超過 max_connections的設定值,否則會出現 : too many connections 的錯誤
    在這裡插入圖片描述

  • 檢視各個狀態的連線情況
    在這裡插入圖片描述

  • Threads_cached:一共快取過多少連線,如果在mysql伺服器的配置檔案中設定了thread_cache_size引數,當前客戶端斷開之後,伺服器處理此客戶的執行緒將會快取起來,以備下一個連線進來的客戶而不是立即銷燬(前提是快取數量未達到上限),可以通過命令:set global thread_cache_size=50 設定或者在 my.cnf中配置

  • Threads_connected: 代表當前已經有多少個連線(sleep+query)

  • Threads_created:歷史總共建立過多少個連線

  • Threads_running:代表有幾個連線正處於"工作"狀態,也是目前的併發數

檢視mysql歷史執行過程中最大連線數以及出現的時點

在這裡插入圖片描述
這是一個很有用的引數,可以用於指導一個系統的資料庫伺服器配置比較合理的最大連線數,因為最大連線數並不是越大越好,可以在系統上線時將 max_connections的值設定的大一點,等到執行一段時間之後,通過觀察上面的這個引數值,再進行設定,這也是指導DBA或者開發人員對於mysql伺服器是否需要進行擴容或者增加節點的一個很重要的衡量引數

檢視mysql設定的連線快取佇列數
在這裡插入圖片描述
back_log:設定儲存多少個連線資料庫的請求到堆疊(緩衝區),就是說,如果mysql的當前連線數達到了max_connections的最大值時,新來的請求將會被儲存在堆疊中,以等待前面的某些連線資源釋放,該堆疊的數量即 back_log,如果等待連線的數量超過了back_log,將不會授予連線資源,報出相關的連線錯誤,back_log可以簡單理解為一個連線的緩衝佇列

如果瞭解Java中的執行緒池原理的同學就很好理解這個概念了,這個可以作為執行緒池調優引數的配置,在mysql中,也可以作為mysql伺服器效能調優的指導,假如你的伺服器配置還可以的話,可以適當的調大這個引數,以獲得更大的併發處理

wait_timeout 與 interactive_timeout

在這裡插入圖片描述
這兩個引數都是連線在超過一段時間之後,資料庫自動關閉,在這個期間持續的時間,預設是8個小時

wait_timeout :針對非互動式連線,比如Java通過JDBC進行連線
interactive_timeout:互動式連線,比如通過mysql的客戶端進行的連線

檢視當前資料庫連線詳情狀況
在這裡插入圖片描述
通過這個命令可以清楚的展現出當前資料庫連線的詳細情況,比如query對應的應用IP,sleep對應的連線客戶端資訊、連線時間等,可以在某些情況下用於監控mysql的整體連線情況

本篇主要總結了與mysql的connection相關的幾個常用配置引數的使用,在實際開發中,可以作為運維或者調優的配置進行參考和使用,本篇到此結束,最後感謝觀看!