歡迎光臨
每天分享高質量文章

MySQL 系統變數配置基礎

來源:MSSQL123 ,

www.cnblogs.com/wy123/p/6595556.html

MySQL變數的概念

個人認為可以理解成MySQL在啟動或者執行過程中讀取的一些引數問題,利用這些引數來啟動服務、響應或者支援使用者的請求等

變數的配置

如果打算長期使用,應該寫入配置檔案,而不是在命中指定,因為在命中設定的變數會隨著MySQL服務的重啟而恢復預設值

另外要註意是設定的當前Session的變數還是全域性的變數。

變數單位

不同的變數的單位不同,比如table_cache是指快取的表的個數,而key_buffer_size則是以位元組為單位

另外還有以頁或者百分比為單位的變數

許多變數可以透過字尾制訂單位,

比如1M表示一百萬位元組,在配置檔案中或者在命令列下有效,

但是在使用set命令的時候,這些單位就無效,必須使用數字,單位為位元組

比如:set @@session.sort_buffer_size = 1024*1024或者set @@session.sort_buffer_size = 1048576

但是配置檔案中設定的時候就不能使用運算式

變數的作用域 

有些變數的作用是伺服器級別的,有些是Session級別的,剩下的的一些是物件級別的。

許多回話的變數是全域性變數相等,可以為是預設值

如果改變會話級的變數,它隻影響當前Session,當前Session關閉後當前設定的引數會失效

舉例:

query_cache_size是全域性級的

sort_buffer_size可以在全域性級設定,每個Session也可以獨立設定

join_buffer_size可以在全域性級設定,也可以在Session級設定,一個查詢中如果有多個表關聯,可以為每個關聯分配一個join buffer

除了在配置檔案中設定變數之外,(部分變數)也可以在執行時修改,MySQL稱之為動態配置變數

比如: set global sort_buffer_size = 1024*1024*1024

set sort_buffer_size = 1024*1024*1024

set @@sort_buffer_size = 1024*1024*1024

set @@session.sort_buffer_size = 1024*1024*1024

set @@global.sort_buffer_size = 1024*1024*1024

常見變數的設定與獲取資源說明:

key_buffer_size

為鍵緩衝區(key buffer,也叫鍵快取key cache)分配所有指定的空間,

作業系統不會為該設定立馬分配記憶體,而是等到使用的時候才分配。

table_cache_size

當有執行緒開啟表時,MySQL會檢查這個標量的值,如果大於快取中表的數量,執行緒可以把最先開啟的表放入快取,

如果該值比快取中的表數小,MySQL將從快取中刪除不常用的表

thread_cache_size

當有連線關閉時,MySQL檢查快取中是否還有空間來快取執行緒。

如果有:則快取改執行緒已被下次連線重用

如果沒有:他講銷毀改執行緒而不再快取,

快取中使用的執行緒數,不會立即減少,只有在新的連線刪除快取中的一個執行緒並使用後才會減少

MySQL只在關閉連線時候才在緩衝中增減執行緒,在建立新的連線的時候才從快取中刪除執行緒

query_cache_size

MySQL啟動的時候,一次性分配並且初始化這塊記憶體,如果修改這個變數(即使設定為與當前值一樣)

MySQL會立刻刪除所有快取的查詢,重新分配這片快取到指定大小,並且重新初始化記憶體

read_buffer_size

MySQL只會在查詢需要時才會為該快取分配記憶體,並且會一次性分配改引數指定大小的全部記憶體

read_rnd_buffer_size

MySQL只會在查詢需要時才會為該快取分配記憶體,並且只分配需要的記憶體大小而不是全部指定的大小

應該叫做,max_read_rnd_buffer_size

sort_buffer_size

MySQL只會在查詢需要做排序操作的時候拆毀為該快取分配記憶體,

一旦需要排序,MySQL就會立刻分配給改引數指定大小的全部記憶體,而不管排序是否需要這麼大的記憶體。

由此可見,不用的變數,設定之後的啟用時間,啟用原理,生效方式等都是有一定差異的。

設定變數的潛在的影響

動態設定全域性變數可能會導致意外的副作用。

某些變數改變後會立即生效,比如從緩衝中掃清贓塊,從而引起伺服器相應請求的一些不穩定甚至更嚴重的問題。


編號303,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

 

演演算法與資料結構

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂