首頁 > 科技

MySQL各大版本新特性一覽

2021-06-10 06:19:33

這次應小夥伴的要求,來總結下這個 MySQL 主要版本的新特性

那麼,我們一起往下看看叭~

我們直接來到官網檢視

可以看到這裡有三個版本 5.6 , 5.7 , 8.0

額 既然 5.5 找不到了,那我們就記住他的主要特點:

  1. innodb 就是從 5.5 這個版本開始成為 預設的儲存引擎
  2. 引入了真 UTF8 ——> utf8mb4

為什麼只有兩點呢? 因為 4ye 的腦瓜子就只有這兩點 哈哈哈

下面開始 5.6 的探索~

5.6

MySQL 5.6 Release Notes

開啟上面的連結 , 如下圖,這裡在介紹這個新特性

What Is New in MySQL 5.6

剩下的就不多贅述啦,簡單摘錄了一些,需要完整資料的小夥伴請移步到官網檢視~ (建議去翻一翻 ,畢竟除了新特性,還有 innodb 整體的介紹!)

innodb

這裡對儲存引擎 innodb 做了下面的增強

  1. 可以創建 全文索引
  2. 可以修改未壓縮表的 InnoDB 頁大小設定為 8KB4KB ,預設是 16KB 注意這裡只有這三個參數有效(4 ,8 ,16) 。 參數: innodb_page_size
  3. InnoDB 的 redo log 檔案可儲存的最大值從 4g 升到 512g , 參數: innodb_log_file_size
  4. 可以設定 innodb 壓縮級別 , 級別等級為 0-9 參數: innodb_compression_level
  5. Innodb 將 flush 刷盤操作從主執行緒移動到其他執行緒
  6. 預設用獨立的表空間 ibd
  7. Undo Log 可以儲存在獨立的表空間

Partitioning

這裡對分區做了下面的加強

  1. 最大分區數量增加到 8192
  2. 支援顯示分區選擇 比如: SELECT * FROM t PARTITION (p0, p1) WHERE c < 5

MySQL NDB Cluster

Mysql叢集,在這個版本作為獨立的產品釋出

注意儲存引擎不是預設的 innodb ,而是 NDB

Replication and logging

複製和日誌記錄

  1. 可以從遠端伺服器讀取 binlog 參數: --read-from-remote-server, -R ; --raw
  2. 延遲複製 參數: CHANGE MASTER TO

Optimizer enhancements

優化器增強

  1. 就是在這裡開始的,我們可以用 EXPLAIN 來檢視 DELETE,INSERT,REPLACE,UPDATE等 DML 操作的執行計劃。 在這之前,它只支援 SELECT 操作。
  2. 優化子查詢
  3. 主機快取

Configuration Changes

5.7

innodb

  1. 增加 DATA_GEOMETRY 類型來支援空間資料類型,以前是用 blob
  2. innodb 的快取池 dump 和 load 加強 ,允許按百分比去儲存快取池中的頁面 參數: innodb_buffer_pool_dump_pct 預設值是 25
  3. InnoDB 增加了對全文解析器插件的支援。
  4. 支援多執行緒來重新整理緩衝池中的髒頁面 記憶體資料頁跟磁碟上資料頁內容不一致,將記憶體頁稱為髒頁
  5. 由於檔案系統 The Fusion-io Non-Volatile Memory (NVM) 在 Linux 上提供了原子操作,這導致 innodb 的 doublewrite 變得冗餘,所以在該檔案系統上,會自動關閉 doublewrite
  6. innodb_buffer_pool_size 參數是動態的,允許您在不重啟伺服器的情況下調整緩衝池的大小
  7. InnoDB 支援使用 spatial 索引來索引空間資料類型
  8. 支援本地分區
  9. 預設行格式由 compact 改為 DYNAMIC

其他

一. 支援JSON

從MySQL 5.7.8開始,MySQL支援原生JSON類型。

震驚(居然還有這回事)

二. EXPLAIN 可以用來獲取在命名連線中執行的可解釋語句的執行計劃

EXPLAIN [options] FOR CONNECTION connection_id;

三. 允許在某個時間點,有多個觸發事件

之前:對於觸發器事件(INSERT、UPDATE、DELETE)和操作時間(BEFORE、AFTER)的組合,一個表最多隻能有一個觸發器,即在某個觸發時間點只能有一個觸發事件

四. 多源複製

可將多個伺服器的內容備份到一個伺服器

8.0

突然發現每次更新都在加強這個 innnodb

innodb

  1. 可以通過 INNODB_CACHED_INDEXES 檢視每個索引快取在 InnoDB 緩衝池中的索引頁數量
  2. 可以使用一個新的動態變數 innodb_deadlock_detect 來禁用死鎖檢測
  3. redo log 優化,可以併發地寫到日誌緩衝區
  4. 日誌緩衝區的大小可以通過 innodb_log_buffer_size 動態調整
  5. undo log 不再存放在系統表中
  6. 支援原子性的 DDL , 確保操作完全成功或者失敗
  7. 從 MySQL 8.0.20 開始,doublewrite 緩衝區儲存在 doublewrite 檔案中

其他

一. Json 增強

二. 預設值

可以為這些類型增加預設值 BLOB、TEXT、GEOMETRY 、 JSON

三. 優化器增強

  1. 支援隱藏索引

ALTER TABLE t1 ALTER INDEX i_idx INVISIBLE;ALTER TABLE t1 ALTER INDEX i_idx VISIBLE;

  1. 索引支援降序排序

四. 支援視窗函數

五. 支援正則表示式

(還有這操作的 )

六. 備份鎖

允許線上備份時使用 DML 語句

總結

看完這篇文章後,不知道小夥伴們會對哪個更新印象最深呢?

比如 4ye 對這幾點有點小印象~

  1. 5.6全文索引,innodb 頁的大小調整(4,8,16 KB)三檔,獨立表空間還有執行計劃的加強,不僅僅select. 以及結尾那麼大一個表格的參數
  2. 5.7 的 JSON,空間資料類型 DATA_GEOMETRY ,以及空間索引 spatial 的出現,還有doublewrite ,髒頁面的優化 和 行格式 DYNAMIC 的出現(以前 compact )
  3. 8.0正則隱藏索引以及它的索引排序

對了 還有,開頭的那兩句~

innodb 就是從 5.5 這個版本開始成為 預設的儲存引擎 引入了真 UTF8 ——> utf8mb4


>作者:4ye醬
連結:https://juejin.cn/post/6971697459332382751
來源:掘金


IT145.com E-mail:sddin#qq.com