mysql 不需要@的变量_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啟動的時候,命令行選項中指定
mysqld --query_cache_size=16M
--max_allowed_packet=1G
2、在mysql server啟動的時候,通過選項文件中指定
[mysqld]
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等來查詢。
mysql> select
@@session.table_type,@@local.table_type,@@table_type;
+----------------------+--------------------+--------------+
| @@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]
總結
以上是生活随笔為你收集整理的mysql 不需要@的变量_mysql参数变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DG导入mysql依赖包_MySql导入
- 下一篇: boolean 默认_MySQL数据类型