MySQL8.0和MySQL 5的區別


雖然MySQL8.0.x都出來了,自己一直使用 5.7的版本,對於新的版本今天抽了些時間來了解一下新的特性。而對於新的版本的了解往往都是從版本區別開始的,今天便算是作一個筆記吧。

Oracle發布新版本的MySQL時,直接從5.7.x 跳到了 8.0,可謂是一個大的版本跳躍,當然也可以從側面反映,這里面的功能會有不少的變化,新版本的MySQL增加了不少的亮點。

 

下面簡要介紹 MySQL 8 中值得關注的新特性和改進:

1、性能提升級。官方表示MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在讀/寫工作負載、IO 密集型工作負載、以及高競爭工作負載時相比MySQL5.7有更好的性能。

 

(阿里雲的圖片 )

 

2、更強的NoSQL文檔支持。MySQL 從 5.7 版本開始提供 NoSQL 存儲功能,目前在 8.0 版本中這部分功能也得到了更大的改進。該項功能消除了對獨立的 NoSQL 文檔數據庫的需求,而 MySQL 文檔存儲也為 schema-less 模式的 JSON 文檔提供了多文檔事務支持和完整的 ACID 合規性。

 

 (阿里雲的圖片 )

 

3、窗口函數。也就是在滿足某種條件的記錄集合上執行的特殊函數。它可以用來實現若干新的查詢方式。窗口函數與 SUM()、COUNT() 這種集合函數類似,但它不會將多行查詢結果合並為一行,而 是將結果放回多行當中。即窗口函數不需要 GROUP BY。窗口函數的使用,將大大提高相關的分析型場景的效率。

 

4、UTF-8編碼。從MySQL8.0開始,使用utf8mb4 作來MySQL的默認字符集,並支持 Unicode 9,默認字符集將從 latin1 改為 utf8mb4,默認定序collation將從latin1_swedish_ci 改為 utf8mb4_800_ci_ai;

 

5、隱藏索引。可以將索引通過命令設置為 隱藏 或 顯示。對於被 隱藏 的索引,它不會被查詢優化器所使用,我們可以使用這一功能,對相關的查詢進行性能調試,通過 隱藏 或 顯示,分析數據庫性能差異的原因,同時也可以去除無效的索引。

隱藏一個索引:

ALTER TABLE TABLENAME ALTER INDEX IDXNAME INVISIBLE;

 

恢復顯示該索引

ALTER TABLE TABLENAME ALTER INDEX IDXNAME VISIBLE;

 

6、持久化設置。MySQL8.0 新增 SET PERSIST 的命令,該命令的配置值保存到數據目錄下的mysqld-auto.cnf文件中,待重啟后,讀取該文件,用其中的配置覆蓋缺省的配置文件,補充了SET GLOBAL 命令只能臨時生效的不足;
命令的使下如:

SET PERSIST max_connections = 400;

 

7、重構 BLOB。重構 BLOB 加速了片段讀取/更新操作,可以加速 JSON 數據的操作。大幅改進了對 JSON 的支持,添加了基於路徑查詢參數從 JSON 字段中抽取數據的 JSON_EXTRACT() 函數,以及用於將數據分別組合到 JSON 數組和對象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函數。


8、事務性數據字典。完全脫離了 MyISAM 存儲引擎,真正將數據字典放到了 InnoDB 中的一些表中,不再需要 FRM、TRG、PAR 等文件;Information Schema 現在以數據字典表的一個視圖出現。也就是原則上可以不需要 MyISAM 數據表類型,系統表都可以放到 InnoDB 之中。

 

9、SQL 角色。可以創建角色,給用戶設置或去除角色,大大方便權限的管理。

 

其實還有很多,這里只是挑了些個人覺得比較重要的,要了解更多的信息,可以通過下面的鏈接看到:

http://mysqlserverteam.com/the-mysql-8-0-0-milestone-release-is-available/

 

最后,附上 MySQL 8.0參考手冊 的鏈接地址:https://dev.mysql.com/doc/refman/8.0/en/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM