[MySQL] 變量(參數)的查看和設置


類似於Oracle的參數文件,MySQL的選項文件(如my.cnf)用於配置MySQL服務器,但和Oracle叫法不一樣,在MySQL里, 官方叫變量(Varialbes),但其實叫參數也是可以的,只要明白這倆是同一個東西就可以了。
MySQL的變量分為以下兩種:
1)系統變量:配置MySQL服務器的運行環境,可以用show variables查看
2)狀態變量:監控MySQL服務器的運行狀態,可以用show status查看
 
系統變量
系統變量按其作用域的不同可以分為以下兩種:
1)分為全局(GLOBAL)級:對整個MySQL服務器有效
2)會話(SESSION或LOCAL)級:只影響當前會話
有些變量同時擁有以上兩個級別,MySQL將在建立連接時用全局級變量初始化會話級變量,但一旦連接建立之后,全局級變量的改變不會影響到會話級變量。
查看系統變量的值
可以通過show vairables語句查看系統變量的值:
[sql] 
mysql> show variables like 'log%';  
mysql> show variables where Variable_name like 'log%' and value='ON';  
注意:show variables優先顯示會話級變量的值,如果這個值不存在,則顯示全局級變量的值,當然你也可以加上GLOBAL或SESSION關鍵字區別:
[sql] 
show global variables;  
show session/local variables;  
在寫一些存儲過程時,可能需要引用系統變量的值,可以使用如下方法:
[sql] 
@@GLOBAL.var_name  
@@SESSION.var_name 或  
@@LOCAL.var_name  
如果在變量名前沒有級別限定符,將優先顯示會話級的值。
最后一種查看變量值的方法是從INFORMATION_SCHEMA 數據庫里的GLOBAL_VARIABLES和SESSION_VARIABLES表獲得。
 
 

設置和修改系統變量的值

在MySQL服務器啟動時,有以下兩種方法設置系統變量的值:
1)命令行參數,如: mysqld --max_connections=200
2)選項文件(my.cnf)
在MySQL服務器啟動后,如果需要修改 系統變量的值,可以通過SET語句:
[plain] 
SET GLOBAL var_name = value;  
SET @@GLOBAL.var_name = value;  
SET SESSION var_name = value;  
SET @@SESSION.var_name = value;  
如果在變量名前沒有級別限定符,表示修改會話級變量。
注意:和啟動時不一樣的是,在運行時設置的變量不允許使用后綴字母'K'、‘M'等,但可以用表達式來達到相同的效果,如:
[sql] 
SET GLOBAL read_buffer_size = 2*1024*1024  
 
這里一個容易把人搞蒙的地方是如果查詢時使用的是show variables的話,會發現設置好像並沒有生效,這是因為單純使用show variables的話就等同於使用的是show session variables,查詢的是會話變量,只有使用show global variables,查詢的才是全局變量。

網絡上很多人都抱怨說他們set global之后使用show variables查詢沒有發現改變,原因就在於混淆了會話變量和全局變量,如果僅僅想修改會話變量的話,可以使用類似set wait_timeout=10;或者set session wait_timeout=10;這樣的語法。
 
狀態變量
狀態變量可以使我們及時了解MySQL服務器的運行狀況,可以使用show status語句查看。
狀態變量和相同變量類似,也分為全局級和會話級,show status也支持like匹配查詢,比較大的不同是狀態變量只能由MySQL服務器本身設置和修改,對於用戶來說是只讀的,不可以通過SET語句設置和修改它們。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM