1. 程式人生 > >【重磅】MySQL 8.0 pre release看點

【重磅】MySQL 8.0 pre release看點

導讀

MySQL 8.0即將釋出,一起來看看都有什麼料。

昨天就收到了官方發給ACEs的郵件,不過今天白天一直在忙著給新房子做保潔,沒來得及認真檢視郵件內容,只是簡單掃了一眼,整體感覺還是有很多驚喜,不過也大體上在意料之中。

重大變更

  1. 徹底將資料字典表引擎從MyISAM改為InnoDB。顯然地,這是要更進一步放棄MyISAM引擎的節奏,還在負隅頑抗的親們,要認清形勢了,哈哈。事實上,我當初的預期是在5.7就該這麼做的。
  2. 增加了ROLE特性。這是繼續向ORACLE看齊啊,我個人沒啥特別感覺。
  3. 修改預設字符集為utf8mb4。這個,見仁見智吧,各有喜好,不管怎樣,也算是緊跟著時代發展的決定了。
  4. 新增INVISIBLE(不可見)索引屬性。可將一個索引設定為不可見,那麼查詢優化器不再識別該索引。這麼做的用意是,方便DBA判斷某個索引過一陣子是否可以刪除,不再擔心誤殺。
  5. 位運算功能增強。以前只能針對INT型別做位運算,現在增加支援二進位制型別的運算,比如 [VAR]BINARY/[TINY|MEDIUM|LONG]BLOB 等多種型別。另外,也支援對 IPV6 和 UUID 型別的位運算。
  6. 線上修改全域性選項(GLOBAL VARIABLES)時,增加 PERSIST 關鍵字後,可以將該調整持久化,即便例項重啟。這就可以避免了線上修改某些選項後,忘了同時修改 my.cnf,造成了例項重啟後,這個修改又被恢復原樣的問題。這個功能顯然也是在學習ORACLE的控制檔案做法呀。
  7. 增強P_S(performance_schema)功能,主要有幾點:
    1. 可以在P_S中直接檢視錯誤日誌;
    2. 在P_S中增加了類似自適應雜湊索引的索引機制,便於快速檢索P_S中的資料;
    3. 線上修改全域性選項(GLOBAL VARIABLES)時,增加 PERSIST 關鍵字後,可以將該調整持久化,即便例項重啟。這就可以避免了線上修改某些選項後,忘了同時修改 my.cnf,造成了例項重啟後,這個修改又被恢復原樣的問題。這個功能顯然也是在學習ORACLE的控制檔案做法呀。
  8. 重構SQL解析器。簡單來說,原先的解析器有嚴重的問題,維護性、擴充套件性都不好,在8.0裡進行了重構,以後會做的更牛逼。
  9. 查詢優化器Hints功能增強。在5.6及更早版本中,子查詢中的派生表總是要進行物化,效率很低。從5.7開始,優化器會根據情況進行判斷,自行決定在哪些情形下需要物化,哪些直接合並進外部查詢中,通常來說,後一種做法效率會搞很多。在8.0中,可以在SQL中增加 /*+ merge */ 關鍵字來決定哪些情形下將派生表合併到外部查詢中以提升查詢效率。
  10. 查詢優化器功能增強。它會判斷InnoDB Buffer中資料、索引緩衝比例的情況,決定每個SQL的訪問模式,儘量避免發生物理讀。
  11. 增加直方圖功能。不知道直方圖什麼意思的話,可以瞭解下MariaDB分支中的QUERY RESPONSE TIME這個外掛的功能,和這個基本相似。又是學習ORACLE的做法呀,汗(⊙﹏⊙)b
  12. GIS功能增強。增加了經度、緯度、平面地圖等功能。
  13. 提高資料掃描查詢效率。例如下面這樣的SQL大概能有5-20%的效率提升:

    SELECT * FROM t;

    或是

    SELECT * FROM t WHERE pk BETWEEN 1000 AND 10000;

  14. 增強InnoDB引擎中部分讀取或更新BLOB資料型別的效率。
  15. InnoDB Memcached功能增強,增加一次取多個值(mget),以及範圍搜尋。
  16. 修復了InnoDB重啟後,自增值丟失的bug,這個bug歷史非常悠久(bug id是199,可想而知,嗯…)。
  17. 會對那些損壞的資料頁加上標記,資料庫例項在進行recovery時,就會忽略這些page了。
  18. 臨時表增強。首先,將壓縮型別臨時表對映成未壓縮格式。其次,將臨時表的元資料儲存在記憶體中。
  19. InnoDB效能大幅提升,主要做了幾個事情:
    1. 可以把想通table ID組內的undo資料批量purge;
    2. 廢除buffer pool mutex。將原來一個mutex拆分成多個,提高併發;
    3. 拆分LOCK_thd_list 和 LOCK_thd_remove 這兩個mutex,大約可提高執行緒連結效率5%。
  20. MySQL複製功能方面的改進或提升不多,這個讓我非常詫異,我也就沒寫出來了。

寫到凌晨一點半,實在有點累(開頭說過,今天做了一天保潔)。其他更多新特性,我大概過了一眼,好像不是太有誘惑性,這次就先不列出來了。

畢竟,現在還只是pre release,在後續的計劃中,肯定還會發生很大變化。比如這次就完全沒提到group replication,也壓根沒提到之前廣大中國MySQL使用者提交給官方的新功能需求,汗一個(⊙﹏⊙)b

再小小吐槽下,安裝包真的是是越做越大了,建議官方釋出的時候,再提供一個strip過後的二進位制包吧,下載起來更快一些~~~

好了,先到這裡,下次再扯。

文:葉金榮

文章出處:老葉茶館(訂閱號ID:iMySQL_WX)