新特性解讀 | 針對使用者定製不同格式執行計劃
作者:楊濤濤
資深資料庫專家,專研 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
- 讀懂MySQL執行計劃MySql
- 移動應用如何針對不同使用者精準定製應用內容或風格?
- [20191220]格式化執行計劃.txt
- 【TUNE_ORACLE】定製化執行計劃SQL參考OracleSQL
- MySQL調優篇 | EXPLAIN執行計劃解讀(4)MySqlAI
- 如何針對不同客戶給不同價格的設定?
- mongodb執行計劃解釋MongoDB
- Explain執行計劃詳解AI
- [20221104]執行計劃一樣Plan hash value不同.txt
- 新特性解讀 | MySQL 8.0 對 UNION 的改進MySql
- 執行計劃-1:獲取執行計劃
- 如何更好的解讀QianBase MPP資料庫執行計劃資料庫
- mysql explain 執行計劃詳解MySqlAI
- MySQL Explain執行計劃 - 詳解MySqlAI
- Kubernetes 1.24新特性解讀
- cluster factor對執行計劃的影響
- 執行計劃-3:解釋規則
- 對超執行緒幾個不同角度的解釋執行緒
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- Python 3.8 新特性全面解讀Python
- Apache Kyuubi 1.6.0 新特性解讀Apache
- Docker 映象製作教程:針對不同語言的精簡策略Docker
- MES製造執行系統生產計劃管理
- MySQL執行計劃MySql
- SYBASE執行計劃
- MySQL 執行計劃MySql
- 對不同角色使用者設定不同的系統首頁
- 如何閱讀PG資料庫的執行計劃資料庫
- 新特性解讀 | MySQL 8.0.28 使用者連線記憶體限制MySql記憶體
- 針對使用非塊執行和塊執行併發壓測對比
- MySQL explain執行計劃詳細解釋MySqlAI
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 從真實案例出發,全方位解讀 NebulaGraph 中的執行計劃
- Oceanbase 和 TiDB 粗淺對比之 - 執行計劃TiDB
- vue-cli 3.0新特性解讀Vue
- 對於WebP格式入門解讀Web
- 數棧技術分享:解讀MySQL執行計劃的type列和extra列MySql