【勝通 】mysql的引數變數
mysql伺服器的系統變數,mysql server system viriables,其實我更願意叫它為“系統引數”!
每一個系統變數都有一個預設值,這個預設值是在編譯mysql系統的時候確定的。對系統變數的指定,一般可以在server啟動的時候在命令列指定選項或者通過選項檔案來指定,當然,大部分的系統變數,可以在系統的執行時,通過set命令指定其值。
mysql的系統引數(系統變數)一共分為2類,全域性變數(global variables)和會話變數(session variables),它們的含義與區別如其各佔的名稱所示。session variables是在session級別的,對其的變更只會影響到本session。global variables是系統級別的,對其的變更會影響所有新session(變更時已經存在session不受影響)至下次mysql server重啟動,注意它的變更影響不能跨重啟,要想再mysql server重啟時也使用新的值,那麼就只有通過在命令列指定變數選項或者更改選項檔案來指定,而通過SET變更是達不到跨重啟的。
當系統啟動是,它會初始化所有的global變數為它們對應的預設值,這些預設值可以通過命令列指定選項或者選項檔案來改變。當一個新的連線建立後,系統也會初始化一批session變數,把它們的值初始化對應的系統變數的值。可見任何一個session變數都有一個global變數與其對應,但是未必每個global變數都有對應的session變數。
系統變數的變更,如果它的值是數字的,你可以通過簡化使用K/M/G作為單位來指定。下面就來介紹一下幾種變更系統變數的方法:
1、在mysql server啟動的時候,命令列選項中指定
2、在mysql server啟動的時候,通過選項檔案中指定
query_cache_size=16M
max_allowed_packet=1G
如果你想限制某個變數的最大值,那麼在系統啟動的時候通過–maximum-var_name=value方式來指定,如果假設我要限制max_allowed_packet最多設定為4G,那麼我只需要通過1、2方法指定:–maximum_allowed_packet=4G,就可以了,這樣在後面的動態改動中,都無法指定大於4G。
3、在mysql server執行的時候,通過SET命令動態指定
有很多的系統變數,都可以在mysql server執行時,通過SET命令來動態指定她的值,這樣的系統變數,我們又稱之為“動態系統變數”(Dynamic System Variables)。
我們首先來看看SET命令的語法:
SET variable_assignment [, variable_assignment] …
variable_assignment:
user_var_name = expr
| [GLOBAL | SESSION] system_var_name = expr
| [@@global. | @@session. | @@]system_var_name = expr
i):如果要修改global系統變數值,你必須要顯示指定“GLOBAL”或者“@@global.”,同時注意,你必須要有SUPER許可權。
ii):如果要修改session變數值,可以指定“SESSION”或者“@@session.”或者“@@”或者“LOCAL”或者“@@local.”,或者什麼都不使用。
有沒有辦法,將session變數值設定為對應的global變數值呢?有,採用如下方式:
SET @@session.var_name=@@global.var_name;
有沒有辦法,將session變數值設定為mysql編譯時候的預設值呢?有,採用如下方式:
SET var_name=DEFAULT;
這裡要注意的是,並不是所有的系統變數都能被設定為DEFAULT,如果你設定這些變數為DEFAULT則會返回錯誤。
上面說了如何設定變數,下面來介紹如何查詢變數。
1、使用SELECT @@global.var_name等來查詢。
+----------------------+--------------------+--------------+
| @@session.table_type | @@local.table_type | @@table_type |
+----------------------+--------------------+--------------+
| InnoDB | InnoDB | InnoDB |
+----------------------+--------------------+--------------+
1 row in set (0.00 sec)
mysql> select @@global.table_type;
+---------------------+
| @@global.table_type |
+---------------------+
| InnoDB |
+---------------------+
1 row in set (0.00 sec)
這裡要注意的是,如果你查詢session變數的值,如果沒有這個session設定了值則返回其值,如果沒有設定則其對應的global變數的值,這裡與SET的時候是不一樣滴。
2、使用SHOW VARIABLES語法:
<!--SHOW [GLOBAL | SESSION] VARIABLES
[LIKE ‘pattern’ | WHERE expr]http://rdc.taobao.com/blog/dba/html/186_mysql_server_system_variables.html/trackback
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-374954/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 不重啟mysql情況修改引數變數MySql變數
- kettle 引數——變數引數和常量引數變數
- 引數和變數變數
- iOS可變引數(不定引數)的用法iOS
- Bash變數和引數變數
- Mysql 引數MySql
- Swift語言中為外部引數設定預設值可變引數常量引數變數引數輸入輸出引數Swift變數
- MySQL 5.6所有系統變數(系統引數)MySql變數
- python變數和引數Python變數
- MySQL變數的使用MySql變數
- Swift學習筆記(三十三)——常量引數,變數引數和inout引數Swift筆記變數
- 查詢hadoop引數變數Hadoop變數
- 【Java】可變引數Java
- Swift: 可變引數Swift
- Java可變引數Java
- Java 可變引數Java
- Java - 可變引數的使用Java
- MySQL 之變數MySql變數
- PHP 函式可變數量的引數列表PHP函式變數
- Shell常用的特殊位置引數變數說明變數
- (10)mysql 中的變數MySql變數
- Mysql變數宣告的方式MySql變數
- MySQL中的@變數名MySql變數
- python---函式引數、變數Python函式變數
- MySQL引數調整MySql
- mysql 常用引數整理MySql
- MySQL引數說明MySql
- mysql 引數調優MySql
- 關鍵字引數與非關鍵字引數(可變引數)詳解
- Mysql重要配置引數的整理MySql
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- 給SQL Server傳送陣列引數的變通辦法(轉)SQLServer陣列
- go-可變引數Go
- 集合框架-可變引數框架
- Python可變引數Python
- 可變引數例項
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- Java的方法可變長引數Java