MySQL 8.0新特性概覽
1.事務性數據字典,完全脫離了MyISAM存儲引擎
真正將數據字典放到了InnoDB中的一些表中,從此不再需要FRM、TRG、PAR文件啦!Information Schema現在以數據字典表的一個視圖出現。原則上可以完全不需要MyISAM數據表類型了,所有的系統表都可以放到InnoDB之中。
2.SQL角色
角色是一系列權限的集合。可以創建角色,給某個用戶授予和去除角色。這對于權限管理很方便。
utf8mb4字符集將成為默認字符集,并支持Unicode 9
默認字符集將從 latin1 改為 utf8mb4,默認定序collation將從latin1_swedish_ci 改為 utf8mb4_800_ci_ai。
3.不可見索引
可以將一些索引設置為不可見,這樣SQL優化器就不會用到它,但是它會繼續在后臺保持更新。當有需要時,可以隨時恢復可見。
對二進制數據可以進行位操作
不僅僅可以對 BIGINT進行位操作,從8.0開始也支持對 [VAR]BINARY/[TINY|MEDIUM|LONG]BLOB進行位操作了。
4.改進了對IPv6和UUID的操作
INET6_ATON() 和 INET6_NTOA() 現在可以進行位操作了,因為INET6_ATON()現在返回的是VARBINARY(16) 數據類型(128位)。改進了UUID操作,引入了三個新的函數 UUID_TO_BIN(), BIN_TO_UUID()和 IS_UUID() 。
MySQL并沒有特殊的IPv6和UUID數據類型,而是以VARBINARY(16) 數據類型保存的。
5.持續性的全局變量
可以用 SET PERSIST 來設置持久性的全局變量,即便
服務器重啟也會保持下來。
性能數據庫Performance Schema的改進
比如對性能數據庫增加了100多個索引,可以檢索更快。
6.重構SQL分析器
持續不斷的逐步改進SQL分析器。舊的分析器由于其語法復雜性和自頂向下的分析方式從而有嚴重的限制,導致難以維護和擴展。
7.成本模型
InnoDB緩沖區現在可以估算主內存緩存區中的有多少表和索引,這可以讓優化器選擇訪問方式時知道數據是否可以存儲在內存中還是必須存儲到磁盤上。
8.直方圖Histograms
通過使用直方圖,用戶或DBA可以對數據分布進行統計,這可以用于查詢優化以尋找優化的查詢方案。
9.改進掃描性能
改進了InnoDB范圍查詢的性能,可提升全表查詢和范圍查詢 5-20%的性能。
10.重構BLOB
重構BLOB加速了片段讀取/更新操作,可以加速JSON數據的操作。
11.持久化自增值
InnoDB會持久化保持自增序列的最大值到redo日志中。這個改進還修復了一個非常老的199號bug。
12.臨時表
取消對壓縮臨時表的支持,并存儲臨時表的元數據到內存中。
從MySQL8.0以后,我們可以發現MySQL做的越來越像Oracle了。