您好,登錄后才能下訂單哦!
通常在服務(wù)器啟動(dòng)時(shí),會(huì)將每個(gè)全局變量初始化為其默認(rèn)值(我們可以通過(guò)命令行或選項(xiàng)文件中指定的選項(xiàng)更改這些默認(rèn)值),然后服務(wù)器還為每個(gè)連接的客戶端維護(hù)一組會(huì)話變量,客戶端的會(huì)話變量在連接時(shí)使用相應(yīng)全局變量的當(dāng)前值初始化。
舉例說(shuō)明如下:
在服務(wù)器啟動(dòng)時(shí)會(huì)初始化一個(gè)名為default_storage_engine
,作用范圍為GLOBAL的系統(tǒng)變量,之后每當(dāng)有一個(gè)客戶端連接到該服務(wù)器時(shí),服務(wù)器都會(huì)單獨(dú)為該客戶端分配一個(gè)名為default_storage_engine,作用范圍為SESSION的系統(tǒng)變量,該作用范圍為SESSION的系統(tǒng)變量值按照當(dāng)前作用范圍為GLOBAL的同名系統(tǒng)變量值進(jìn)行初始化。
很顯然,通過(guò)啟動(dòng)選項(xiàng)設(shè)置的系統(tǒng)變量的作用范圍都是GLOBAL的,也就是對(duì)所有客戶端都有效的,因?yàn)樵谙到y(tǒng)啟動(dòng)的時(shí)候還沒有客戶端程序連接進(jìn)來(lái)呢。了解了系統(tǒng)變量的GLOBAL和SESSION作用范圍之后,我們?cè)倏匆幌略诜?wù)器程序運(yùn)行期間通過(guò)客戶端程序設(shè)置系統(tǒng)變量的語(yǔ)法:
SET [GLOBAL|SESSION] 系統(tǒng)變量名 = 值;
或者如下寫法:
SET [@@(GLOBAL|SESSION).]var_name = XXX;
比如我們想在服務(wù)器運(yùn)行過(guò)程中把作用范圍為GLOBAL的系統(tǒng)變量default_storage_engine的值修改為MyISAM,也就是想讓之后新連接到服務(wù)器的客戶端都用MyISAM作為默認(rèn)的存儲(chǔ)引擎,那我們可以選擇下邊兩條語(yǔ)句中的任意一條來(lái)進(jìn)行設(shè)置:
語(yǔ)句一:
SET GLOBAL default_storage_engine = MyISAM;
語(yǔ)句二:
SET @@GLOBAL.default_storage_engine = MyISAM;
如果只想對(duì)本客戶端生效,也可以選擇下邊三條語(yǔ)句中的任意一條來(lái)進(jìn)行設(shè)置:
語(yǔ)句一:
SET SESSION default_storage_engine = MyISAM;
語(yǔ)句二:
SET @@SESSION.default_storage_engine = MyISAM;
語(yǔ)句三:
SET default_storage_engine = MyISAM;
從上邊的語(yǔ)句三也可以看出,如果在設(shè)置系統(tǒng)變量的語(yǔ)句中省略了作用范圍,默認(rèn)的作用范圍就是SESSION。也就是說(shuō)SET 系統(tǒng)變量名 = 值和SET SESSION 系統(tǒng)變量名 = 值是等價(jià)的。
查看不同作用范圍的系統(tǒng)變量
既然系統(tǒng)變量有作用范圍之分,那我們的SHOW VARIABLES語(yǔ)句查看的是什么作用范圍的系統(tǒng)變量呢?
答:默認(rèn)查看的是SESSION作用范圍的系統(tǒng)變量。
當(dāng)然我們也可以在查看系統(tǒng)變量的語(yǔ)句上加上要查看哪個(gè)作用范圍的系統(tǒng)變量,就像這樣:
SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
以上就是詳細(xì)講解mysql全局變量與局部變量的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。