1. 程式人生 > >MySQL8.0新特性

MySQL8.0新特性

數據庫

無意中發現MySQL的版本已經更新到8.0了,了解一下不同的地方

  1. 數據字典
    新增了事務型的數據字典,用來存儲數據庫對象信息
    之前,字典數據是存儲在元數據文件和非事務型表中的

  2. 賬號權限管理
    添加了對 “角色” 的支持,角色會對應一套權限,角色可以被添加、刪除,角色上的權限也可以進行增刪
    可以對用戶賬號添加和刪除角色

  3. InnoDB 提升
    完善了對自增計數器(auto-increment counter)的管理,例如設置了計數器的初始值,在服務器重啟後也不會受到影響;執行 ROLLBACK 也不會導致計數器的值被重用

InnoDB memcached 插件支持在一個查詢中獲取多個key/value對兒,並可以進行範圍查詢

新增了動態配置項 innodb_deadlock_detect,用來禁用死鎖檢查,因為在高並發系統中,當大量線程等待同一個鎖時,死鎖檢查會大大拖慢數據庫
所有的InnoDB臨時表會被創建到共享的臨時表空間中

SELECT ... FOR SHARE 和 SELECT ... FOR UPDATE 中支持 NOWAIT、SKIP LOCKED選項,NOWAIT 的作用是,當被請求的行被鎖住時,此語句立即返回;SKIP LOCKED的作用是從結果集中移除被鎖住的行

  1. JSON 提升
    添加內聯路徑操作符 ->>,相當於對 JSON_EXTRACT() 的結果集調用 JSON_UNQUOTE()

新增兩個JSON聚合函數:JSON_ARRAYAGG()、 JSON_OBJECTAGG()(相關文章:體驗 Mysql 操作 JSON 文檔、體驗 MySQL 8.0 JSON聚合函數)

新加一個工具函數 JSON_PRETTY(),可以對 JSON 進行格式化,提高可讀性

在查詢中使用 order by 對 JSON 值進行排序時,每個值的 sort key 的長度將是可變的,而不再是固定的1K,有兩個好處,1)更高效的使用排序緩沖空間,更多的數據可以在內存中,避免不必要的磁盤訪問;2)提高 key 的比較性能

  1. Optimizer 優化器
    支持隱藏索引,優化器可以忽略隱藏索引,但隱藏索引是被正常維護的,作用是用來測試無效索引,刪除某索引之前,可以先設置為隱藏索引,確定對系統沒有影響後再刪除,以防刪掉後再次重建(相關文章:MySQL 8.0 新特性 :隱藏索引)

支持降序索引,可以對索引定義 DESC,之前,索引可以被反序掃描,但影響性能,而降序索引就可以高效的完成

MySQL8.0新特性