新特性解讀 | 針對使用者定製不同格式執行計劃
作者:楊濤濤
資深資料庫專家,專研 MySQL 十餘年。擅長 MySQL、PostgreSQL、MongoDB 等開源資料庫相關的備份恢復、SQL 調優、監控運維、高可用架構設計等。目前任職於愛可生,為各大運營商及銀行金融企業提供 MySQL 相關技術支援、MySQL 相關課程培訓等工作。
本文來源:原創投稿
好吧!當時MySQL 沒有提供這樣的功能,而且我也覺得這樣的功能非必需,於是我給了三個可選方法:
第一:自己寫個指令碼對 MySQL 客戶端進行封裝;
第二:建議直接用 SHELL 來呼叫 MySQL 客戶端,並且定製類似 SHELL 的別名;
第三:別偷懶...。
最後經過一系列探討,客戶選擇了選項三!
我們來體驗下這個功能:
設定預設格式為 tree 。
mysql:8.0.32-cluster:ytt>set @@explain_format=tree;
Query OK, 0 rows affected (0.00 sec)
<mysql:8.0.32-cluster:ytt>explain table t1\G
*************************** 1. row ***************************
EXPLAIN: -> Table scan on t1 (cost=1.20 rows=2)
1 row in set (0.00 sec)
設定預設格式為 traditional ,也就是傳統模式。
mysql:8.0.32-cluster:ytt>set @@explain_format=traditional;
Query OK, 0 rows affected (0.00 sec)
<mysql:8.0.32-cluster:ytt>explain table t1\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: t1
partitions: NULL
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 2
filtered: 100.00
Extra: NULL
1 row in set, 1 warning (0.00 sec)
有了這個功能,就彷彿奧特曼看到了光。那接下來,我們來實現本篇開頭的需求:語句相同,使用者不同,執行計劃的輸出格式不同。
分別建立這兩個使用者:
mysql:8.0.32-cluster:ytt>create user zhangsan;
Query OK, 0 rows affected (0.00 sec)
<mysql:8.0.32-cluster:ytt>create user lisi;
Query OK, 0 rows affected (0.01 sec)
<mysql:8.0.32-cluster:ytt>grant select on ytt.* to zhangsan;
Query OK, 0 rows affected (0.01 sec)
<mysql:8.0.32-cluster:ytt>grant select on ytt.* to lisi;
Query OK, 0 rows affected (0.01 sec)
使用者 zhangsan 連線 MySQL 後,自動設定執行計劃格式:
root@ytt-super:/home/ytt# mysql -uzhangsan --init-command='set @@explain_format=tree' -D ytt
...
<mysql:8.0.32-cluster:ytt>explain table t1\G
*************************** 1. row ***************************
EXPLAIN: -> Table scan on t1 (cost=1.20 rows=2)
1 row in set (0.00 sec)
同樣的方法,使用者 lisi 則這樣連線 MySQL :結果太長,我就不貼了。
root@ytt-super:/home/ytt# mysql -ulisi --init-command='set @@explain_format=json' -D ytt
本文關鍵字:#執行計劃輸出格式# #MySQL 8.0 新特性#
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024420/viewspace-2934536/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 閱讀執行計劃
- mysql主從庫執行計劃不同MySql
- rbo下針對表與表之間的連線執行計劃的確定原則!
- 讀懂MySQL執行計劃MySql
- 讀懂 MySQL 執行計劃MySql
- Oracle閱讀執行計劃Oracle
- 移動應用如何針對不同使用者精準定製應用內容或風格?
- 【TUNE_ORACLE】定製化執行計劃SQL參考OracleSQL
- oracle 執行計劃設定Oracle
- VSFTP針對不同的使用者限制不同的速度FTP
- 執行計劃詳解
- MySQL調優篇 | EXPLAIN執行計劃解讀(4)MySqlAI
- 執行計劃的閱讀方法
- 如何針對不同客戶給不同價格的設定?
- Explain執行計劃詳解AI
- mongodb執行計劃解釋MongoDB
- Oracle執行計劃詳解Oracle
- MSSQLSERVER執行計劃詳解SQLServer
- oracle 11g新特性Cardinality Feedback基數反饋造成同一sql幾乎同時執行產生不同的執行計劃OracleSQL
- .net 4.0 中對多執行緒新特性(轉)執行緒
- 新特性解讀 | MySQL 8.0 對 UNION 的改進MySql
- goldengate針對不同表名及列名的複製Go
- 分割槽表與堆表執行計劃的不同
- 執行計劃-1:獲取執行計劃
- FAQ系列|解讀EXPLAIN執行計劃中的key_lenAI
- SQL最佳化 —— 讀懂執行計劃SQL
- MySQL Explain執行計劃 - 詳解MySqlAI
- mysql explain 執行計劃詳解MySqlAI
- MySQL執行計劃EXPLAIN詳解MySqlAI
- sql的執行計劃 詳解SQL
- 【顯示執行計劃】在普通使用者下使用set autot 檢視執行計劃
- 執行計劃不穩定的原因分析
- 執行計劃
- cluster factor對執行計劃的影響
- 對一個執行計劃的疑問
- linux設定crontab定時執行任務計劃Linux
- 針對補考科目的學習計劃
- 執行計劃-3:解釋規則