mysql 不需要@的变量_mysql参数变量
mysql服務(wù)器的系統(tǒng)變量,mysql server system viriables,其實(shí)我更愿意叫它為“系統(tǒng)參數(shù)”!
每一個(gè)系統(tǒng)變量都有一個(gè)默認(rèn)值,這個(gè)默認(rèn)值是在編譯mysql系統(tǒng)的時(shí)候確定的。對(duì)系統(tǒng)變量的指定,一般可以在server啟動(dòng)的時(shí)候在命令行指定選項(xiàng)或者通過選項(xiàng)文件來指定,當(dāng)然,大部分的系統(tǒng)變量,可以在系統(tǒng)的運(yùn)行時(shí),通過set命令指定其值。
mysql的系統(tǒng)參數(shù)(系統(tǒng)變量)一共分為2類,全局變量(global variables)和會(huì)話變量(session
variables),它們的含義與區(qū)別如其各占的名稱所示。session
variables是在session級(jí)別的,對(duì)其的變更只會(huì)影響到本session。global
variables是系統(tǒng)級(jí)別的,對(duì)其的變更會(huì)影響所有新session(變更時(shí)已經(jīng)存在session不受影響)至下次mysql
server重啟動(dòng),注意它的變更影響不能跨重啟,要想再mysql
server重啟時(shí)也使用新的值,那么就只有通過在命令行指定變量選項(xiàng)或者更改選項(xiàng)文件來指定,而通過SET變更是達(dá)不到跨重啟的。
當(dāng)
系統(tǒng)啟動(dòng)是,它會(huì)初始化所有的global變量為它們對(duì)應(yīng)的默認(rèn)值,這些默認(rèn)值可以通過命令行指定選項(xiàng)或者選項(xiàng)文件來改變。當(dāng)一個(gè)新的連接建立后,系統(tǒng)也
會(huì)初始化一批session變量,把它們的值初始化對(duì)應(yīng)的系統(tǒng)變量的值。可見任何一個(gè)session變量都有一個(gè)global變量與其對(duì)應(yīng),但是未必每個(gè)
global變量都有對(duì)應(yīng)的session變量。
系統(tǒng)變量的變更,如果它的值是數(shù)字的,你可以通過簡(jiǎn)化使用K/M/G作為單位來指定。下面就來介紹一下幾種變更系統(tǒng)變量的方法:
1、在mysql server啟動(dòng)的時(shí)候,命令行選項(xiàng)中指定
mysqld --query_cache_size=16M
--max_allowed_packet=1G
2、在mysql server啟動(dòng)的時(shí)候,通過選項(xiàng)文件中指定
[mysqld]
query_cache_size=16M
max_allowed_packet=1G
如果你想限制某個(gè)變量的最大值,那么在系統(tǒng)啟動(dòng)的時(shí)候通過–maximum-var_name=value方式來指定,如果假設(shè)我要限制
max_allowed_packet最多設(shè)置為4G,那么我只需要通過1、2方法指定:–maximum_allowed_packet=4G,就可以
了,這樣在后面的動(dòng)態(tài)改動(dòng)中,都無法指定大于4G。
3、在mysql server運(yùn)行的時(shí)候,通過SET命令動(dòng)態(tài)指定
有很多的系統(tǒng)變量,都可以在mysql
server運(yùn)行時(shí),通過SET命令來動(dòng)態(tài)指定她的值,這樣的系統(tǒng)變量,我們又稱之為“動(dòng)態(tài)系統(tǒng)變量”(Dynamic System
Variables)。
我們首先來看看SET命令的語(yǔ)法:
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系統(tǒng)變量值,你必須要顯示指定“GLOBAL”或者“@@global.”,同時(shí)注意,你必須要有SUPER權(quán)限。
ii):如果要修改session變量值,可以指定“SESSION”或者“@@session.”或者“@@”或者“LOCAL”或者“@@local.”,或者什么都不使用。
有沒有辦法,將session變量值設(shè)置為對(duì)應(yīng)的global變量值呢?有,采用如下方式:
SET @@session.var_name=@@global.var_name;
有沒有辦法,將session變量值設(shè)置為mysql編譯時(shí)候的默認(rèn)值呢?有,采用如下方式:
SET var_name=DEFAULT;
這里要注意的是,并不是所有的系統(tǒng)變量都能被設(shè)置為DEFAULT,如果你設(shè)置這些變量為DEFAULT則會(huì)返回錯(cuò)誤。
上面說了如何設(shè)置變量,下面來介紹如何查詢變量。
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變量的值,如果沒有這個(gè)session設(shè)置了值則返回其值,如果沒有設(shè)置則其對(duì)應(yīng)的global變量的值,這里與SET的時(shí)候是不一樣滴。
2、使用SHOW VARIABLES語(yǔ)法:
SHOW [GLOBAL | SESSION] VARIABLES
[LIKE ‘pattern’ | WHERE expr]
總結(jié)
以上是生活随笔為你收集整理的mysql 不需要@的变量_mysql参数变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DG导入mysql依赖包_MySql导入
- 下一篇: checksum命令 linux_lin