MySQL中的變量相關問題
MySQL中的變量可分為以下幾種:
1、 MySQL系統變量:該類型變量反映了MySQL服務器是如何配置的。每一個系統變量都有一個默認值。系統變量可以在MySQL配置文件中進行設置,或使用MySQL啟動選項進行設置。大多數系統變量都可以在MySQL運行時使用SET命令進行動態修改。
2、 MySQL狀態變量:該類型變量反映了MySQL服務器的運行狀態。
變量按作用範圍可分為:
1、 全局變量(global):對MySQL服務器全局生效。
2、 會話變量(session):僅對單個客戶端會話有影響。
有些MySQL選項只有全局變量或會話變量,而有些則同時有全局變量和會話變量。全局和會話變量的關聯是這樣的:
1、 當MySQL服務啟動時,它會初始每一個全局變量為默認值。這個默認值可以在配置文件中或使用MySQL啟動選項進行修改。
2、 MySQL也會為每一個客戶端連接維護一個會話變量集。當客戶端連接MySQL服務時,它所有的會話變量都會初始化為相應全局變量的當前值。對於少數系統變量,它的會話值可能不會被初始化為相應全局變量的值,具體可查詢MySQL官方手冊。
系統變量根據是否可動態修改(dynamic),分為:
動態變量:可動態修改變量的值。修改後無需重啟MySQL服務即可生效。
非動態變量:不可動態修改變量的值。修改後需重啟MySQL服務才可生效。
完整的變量屬性列表可以在MySQL參考手冊中查詢得到。比如,可以了解到某一個變量是系統變量還是狀態變量,是全局變量還是還是變量還是兩種都有,是動態變量還是非動態變量。
查看變量的值
要查看MySQL的所有默認系統變量值(忽略配置文件中的設置),使用命令:
[root@gw ~]# mysqld --no-defaults --verbose --help
要查看MySQL的所有默認系統變量值(讀取配置文件中的設置後的),使用命令:
[root@gw ~]# mysqld --verbose --help
SHOW命令查看系統變量的值,語法格式為:
mysql> SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
當使用關鍵字GLOBAL時,是查看所有全局變量的當前值:
mysql> SHOW GLOBAL VARIABLES;
當不使用關鍵字或使用關鍵字SESSION時,是查看所有會話變量的當前值(有會話變量的則顯示當前會話變量的值,沒有的則顯示全局變量的值):
mysql> SHOW VARIABLES;
mysql> SHOW SESSION VARIABLES;
可以加上LIKE語句並使用通配符 % 或 _ 來匹配特定的變量。百分號 % 匹配任意數量字符,下劃線 _ 匹配單個字符。示例:
mysql> SHOW VARIABLES LIKE ‘innodb_buffer%‘;
mysql> SHOW GLOBAL VARIABLES LIKE ‘innodb_buffer%‘;
另外,也可以使用 SELECT 語句來查看系統變量的值。比如:
mysql> SELECT @@global.sql_mode, @@session.sql_mode, @@sql_mode;
對於在表達式中使用 @@var_name 這種形式引用變量的值(而不是使用 @@global. 或 @@session.),MySQL會返回會話變量的值(如果存在),否則會返回全局變量的值。有 @@global. 前綴的是顯式指定查看全局變量的值,有 @@session. 前綴的是顯式指定查看會話變量的值。
MySQL中的變量相關問題