<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
能夠在程式執行過程中影響Mysql程式行為的變數稱之為系統變數。
在Mysql中存在多個系統變數,可以使用show variables
檢視,如果直接執行得到的結果是查詢了所有的系統變數,所以這個命令支援模糊匹配,
演示如下:
### 模糊搜尋系統變數中包含conn的所有變數,精確匹配時值不包含% mysql> show variables like '%conn%'; +-----------------------------------------------+-----------------+ | Variable_name | Value | +-----------------------------------------------+-----------------+ | character_set_connection | utf8 | | collation_connection | utf8_general_ci | | connect_timeout | 10 | | disconnect_on_expired_password | ON | | init_connect | | | max_connect_errors | 100 | | max_connections | 400 | | max_user_connections | 0 | | performance_schema_session_connect_attrs_size | 512 | +-----------------------------------------------+-----------------+
設定系統變數其實在上篇已經聊過兩種通過啟動項設定以及my.cnf組態檔設定,演示如下
my.cnf檔案設定;
[mysqld] datadir=/usr/local/mysql-5.7.26/data default-storage-engine=MyISAM max-connections=10 ### 其它設定省略
使用者端讀取:
mysql> show variables like '%datadir%'; +---------------+-------------------------------+ | Variable_name | Value | +---------------+-------------------------------+ | datadir | /usr/local/mysql-5.7.26/data/ | +---------------+-------------------------------+ 1 row in set (0.00 sec) mysql> show variables like '%default-storage-engine%'; Empty set (0.01 sec) #### 注意搜尋系統變數名字的區別!!! mysql> show variables like '%default_storage_engine%'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | default_storage_engine | MyISAM | +------------------------+--------+ 1 row in set (0.00 sec)
注意:在MySQL使用者端讀取設定時所有系統變數採用的是下劃線(僅支援下劃線),而在組態檔My.cnf或者啟動設定項中採用中劃線或者下劃線是等價的,一定要注意區分!!!!!!。
伺服器端啟動設定
### root使用者執行採用設定--user=root,非root使用者不用 mysqld --user=root --max-connections=111
使用者端查詢系統變數
mysql> show variables like '%max_connections%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 111 | +-----------------+-------+ 1 row in set (0.00 sec)
這兩種方法都可以修改系統變數,但是缺點也是存在的
所以這裡介紹第三種方式,採用set的形式修改系統變數。
在Mysql使用者端我們可以採用Set命令直接修改系統變數,不過需要注意的是,Set的形式修改會指定系統變數生效的範圍,因為當多個使用者端連線同一個伺服器端時可能一個系統變數需要作用於所有的使用者端,有的系統變數只需要作用於當前的使用者端即可,根據作用範圍分為如下兩種。
顯然對於my.cnf設定設定和啟動項設定都是作用於所有的使用者端,也就是GLOBAL作用範圍,那麼只針對當前使用者端的系統變數需要如何設定呢,
體驗如下所示:
#### 先查詢一次儲存引擎的值 mysql> show variables like '%default_storage_engine%'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | default_storage_engine | MyISAM | +------------------------+--------+ 1 row in set (0.00 sec) mysql> set default_storage_engine=InnoDB; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%default_storage_engine%'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | default_storage_engine | InnoDB | +------------------------+--------+ 1 row in set (0.00 sec)
我們在使用set命令改變系統變數的值其實預設就是session範圍的語法,具體語法如下:
### 語法一:預設採用session mysql> set default_storage_engine=InnoDB; ### 語法二:指定作用範圍session mysql> set session default_storage_engine InnoDB; ### 語法三 mysql> set @@session.default_storage_engine=InnoDB;
global影響範圍是所有的使用者端,具體語法如下所示:
### 語法一 mysql> set global default_storage_engine=InnoDB; ### 語法二 mysql> set @@global.default_storage_engine=MyISAM;
從上面我們知道了Mysql中的系統變數分為兩種操作範圍,同樣查詢系統變數時也是分作用範圍查詢,查詢系統變數語法如下所示。
show [global|session] variables like [匹配元素支援模糊匹配%]
預設顯示的是session作用範圍的系統變數。
命令演示如下:
### 查詢session當前使用者端儲存引擎的系統變數 mysql> show session variables like 'default_storage_engine'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | default_storage_engine | InnoDB | +------------------------+--------+ 1 row in set (0.01 sec) ### 查詢global所有使用者端儲存引擎的系統變數 mysql> show global variables like 'default_storage_engine'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | default_storage_engine | InnoDB | +------------------------+--------+ 1 row in set (0.01 sec) ### 改變全域性系統變數【預設儲存引擎】 mysql> set global default_storage_engine=MyISAM; Query OK, 0 rows affected (0.00 sec) ### 再次查詢全域性系統變數【預設儲存引擎】值,修改成功!!!!!!! mysql> show global variables like 'default_storage_engine'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | default_storage_engine | MyISAM | +------------------------+--------+ 1 row in set (0.00 sec) ### 再次查詢當前使用者端【預設儲存引擎】值,沒有被修改!! mysql> show session variables like 'default_storage_engine'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | default_storage_engine | InnoDB | +------------------------+--------+ 1 row in set (0.00 sec)
注意:當修改全域性global作用範圍的系統變數時,session作用範圍的相同名字系統變數值並不會馬上修改,需要等使用者端下一次接入時才會生效,也就是說修改全域性global作用範圍的系統變數,只會影響後續接入使用者端作用範圍為session的系統變數。
只有session範圍的系統變數
只有session範圍的系統變數,如insert_id
,表示對當前使用者端表設定了自增長AUTO_INCREMENT列,插入資料的自增長id初始值,
演示如下:
### 初始值預設0 mysql> show variables like 'insert_id'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | insert_id | 0 | +---------------+-------+ 1 row in set (0.00 sec) ### 設定初始值為2 mysql> set session insert_id=2; Query OK, 0 rows affected (0.00 sec) ### 建立一張表,帶有自增長AUTO_INCREMENT列 mysql> CREATE TABLE tb_student( -> id INT(4) PRIMARY KEY AUTO_INCREMENT, -> name VARCHAR(25) NOT NULL -> ); Query OK, 0 rows affected (0.00 sec) mysql> insert into tb_student(name) values('zhangsan'); Query OK, 1 row affected (0.00 sec) ### 自增長初始值由0變為2,設定成功!! mysql> select * from tb_student; +----+----------+ | id | name | +----+----------+ | 2 | zhangsan | +----+----------+ 1 row in set (0.00 sec)
session作用範圍的不能設定為全域性系統變數,提示如下:
mysql> set global insert_id=2; ERROR 1228 (HY000): Variable 'insert_id' is a SESSION variable and can't be used with SET GLOBAL
只有global範圍的系統變數
這類變數多為系統功能支援變數,如max_connections系統最大連線數,只能採用global修改
mysql> set max_connections=123; ERROR 1229 (HY000): Variable 'max_connections' is a GLOBAL variable and should be set with SET GLOBAL
對於絕大多數系統變數來講都是可以修改的,但萬事有例外,有些系統變數唯讀,如version
檢視資料庫版本。
mysql> show variables like 'version'; +---------------+--------+ | Variable_name | Value | +---------------+--------+ | version | 5.7.26 | +---------------+--------+ 1 row in set (0.01 sec) ### 唯讀系統變數修改報錯 mysql> set version='1.0.0'; ERROR 1238 (HY000): Variable 'version' is a read only variable
系統變數是能夠影響程式的執行行為的變數,而狀態變數是能夠幫我們瞭解程式執行過程中的情況,這些狀態變數的值由程式執行過程中產生,不可設定,具體語法如下
show [global|session] status like [匹配元素支援模糊匹配%]
不寫明作用範圍預設session
命令演示如下:
### 預設查詢session作用範圍的資料 mysql> show status like '%threads%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | Delayed_insert_threads | 0 | | Slow_launch_threads | 0 | | Threads_cached | 0 | | Threads_connected | 2 | | Threads_created | 2 | | Threads_running | 1 | +------------------------+-------+
到此這篇關於Mysql系統變數與狀態變數詳細介紹的文章就介紹到這了,更多相關Mysql系統變數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45