前言:
創(chuàng)新互聯(lián)長(zhǎng)期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為瓊中黎族企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),瓊中黎族網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。在前面一些文章中,經(jīng)常能看到介紹某某參數(shù)的作用,可能有些小伙伴仍搞不清楚 MySQL 參數(shù)是啥。本篇文章我們來聊聊 MySQL 參數(shù),學(xué)習(xí)下如何管理維護(hù) MySQL 參數(shù)。
1.MySQL參數(shù)概念
我們所說的參數(shù)在官方文檔中稱為 系統(tǒng)變量 (system variable),不同的變量有著不同的作用。 MySQL 服務(wù)端維護(hù)了許多表示其配置的系統(tǒng)變量,所有變量均有默認(rèn)值。一般可以在啟動(dòng)命令行中或配置文件中對(duì)它們進(jìn)行設(shè)置。
系統(tǒng)變量分為全局系統(tǒng)變量(global)和會(huì)話系統(tǒng)變量(session)。有些變量既有全局變量又有會(huì)話變量,有些變量只有全局變量。全局變量影響服務(wù)器的全局操作,會(huì)話變量只影響具體客戶端連接相關(guān)操作。若會(huì)話變量未單獨(dú)設(shè)置,則繼承自相應(yīng)全局變量。
MySQL 服務(wù)啟動(dòng)時(shí),會(huì)按照配置文件或命令行中指定的選項(xiàng)來給全局變量賦值,沒有指定則按默認(rèn)值處理。服務(wù)啟動(dòng)后,通過連接服務(wù)器并執(zhí)行 SET GLOBAL var_name 語句可以動(dòng)態(tài)更改部分全局變量的值。要想更改全局變量,必須具有 SUPER 權(quán)限。 MySQL 還為每個(gè)客戶端連接維護(hù)會(huì)話變量,連接時(shí)使用相應(yīng)全局變量的當(dāng)前值對(duì)客戶端會(huì)話變量進(jìn)行初始化??蛻舳丝梢酝ㄟ^ SET SESSION var_name 語句來動(dòng)態(tài)更改會(huì)話變量。設(shè)置會(huì)話變量不需要特殊權(quán)限,但會(huì)話變量只作用于當(dāng)前連接。
2.參數(shù)查詢與變更示例
這里也要說明下,并不是所有的參數(shù)都可以動(dòng)態(tài)修改,某些參數(shù)只能寫入配置文件然后重啟數(shù)據(jù)庫才能生效。下面我們來展示下 MySQL 參數(shù)的查詢與修改。
# 參數(shù)查詢 show global variables like 'var_name'; //查看全局系統(tǒng)變量的值,可使用%通配符 show session variables like 'var_name'; //查看會(huì)話系統(tǒng)變量的值 show variables like 'var_name'; //優(yōu)先返回會(huì)話系統(tǒng)變量,若會(huì)話系統(tǒng)變量不存在,則返回全局系統(tǒng)變量。 # 也可用select查詢某個(gè)特定參數(shù) select @@global.var_name; //全局系統(tǒng)變量 select @@session.var_name; //會(huì)話系統(tǒng)變量 select @@var_name; //優(yōu)先會(huì)話系統(tǒng)變量 # 查詢示例 mysql> show global variables like 'server_id'; +---------------+---------+ | Variable_name | Value | +---------------+---------+ | server_id | 1003306 | +---------------+---------+ 1 row in set (0.00 sec) mysql> show global variables like 'log_bin%'; +---------------------------------+-------------------------------+ | Variable_name | Value | +---------------------------------+-------------------------------+ | log_bin | ON | | log_bin_basename | /data/mysql/logs/binlog | | log_bin_index | /data/mysql/logs/binlog.index | | log_bin_trust_function_creators | ON | | log_bin_use_v1_row_events | OFF | +---------------------------------+-------------------------------+ 5 rows in set (0.00 sec) mysql> select @@server_id; +-------------+ | @@server_id | +-------------+ | 1003306 | +-------------+ 1 row in set (0.00 sec) # 動(dòng)態(tài)修改參數(shù) set global var_name = value; set session var_name = value; set var_name = value; set @@global.var_name = value; set @@session.var_name = value; set @@var_name = value; # 參數(shù)修改示例 mysql> set global sort_buffer_size = 2097152; Query OK, 0 rows affected (0.00 sec) mysql> set session sort_buffer_size = 4194304; Query OK, 0 rows affected (0.00 sec) mysql> select @@global.sort_buffer_size,@@session.sort_buffer_size; +---------------------------+----------------------------+ | @@global.sort_buffer_size | @@session.sort_buffer_size | +---------------------------+----------------------------+ | 2097152 | 4194304 | +---------------------------+----------------------------+ 1 row in set (0.00 sec)