這次應(yīng)小伙伴的要求,來總結(jié)下這個 MySQL 主要版本的新特性
那么,我們一起往下看看叭~
我們直接來到官網(wǎng)查看
可以看到這里有三個版本 5.6 , 5.7 , 8.0
額 既然 5.5 找不到了,那我們就記住他的主要特點:
- innodb 就是從 5.5 這個版本開始成為 默認(rèn)的存儲引擎
- 引入了真 UTF8 ——> utf8mb4
為什么只有兩點呢? 因為 4ye 的腦瓜子就只有這兩點 哈哈哈
下面開始 5.6 的探索~
5.6
MySQL 5.6 Release Notes
打開上面的鏈接 , 如下圖,這里在介紹這個新特性
What Is New in MySQL 5.6
剩下的就不多贅述啦,簡單摘錄了一些,需要完整資料的小伙伴請移步到官網(wǎng)查看~ (建議去翻一翻 ,畢竟除了新特性,還有 innodb 整體的介紹!)
innodb
這里對存儲引擎 innodb 做了下面的增強
- 可以創(chuàng)建 全文索引
- 可以修改未壓縮表的 InnoDB 頁大小設(shè)置為 8KB 或 4KB ,默認(rèn)是 16KB 注意這里只有這三個參數(shù)有效(4 ,8 ,16) 。 參數(shù): innodb_page_size
- InnoDB 的 redo log 文件可存儲的最大值從 4g 升到 512g , 參數(shù): innodb_log_file_size
- 可以設(shè)置 innodb 壓縮級別 , 級別等級為 0-9 參數(shù): innodb_compression_level
- Innodb 將 flush 刷盤操作從主線程移動到其他線程
- 默認(rèn)用獨立的表空間 ibd
- Undo Log 可以保存在獨立的表空間
Partitioning
這里對分區(qū)做了下面的加強
- 最大分區(qū)數(shù)量增加到 8192
- 支持顯示分區(qū)選擇 比如: SELECT * FROM t PARTITION (p0, p1) WHERE c < 5
MySQL NDB Cluster
Mysql集群,在這個版本作為獨立的產(chǎn)品發(fā)布
注意存儲引擎不是默認(rèn)的 innodb ,而是 NDB
Replication and logging
復(fù)制和日志記錄
- 可以從遠(yuǎn)程服務(wù)器讀取 binlog 參數(shù): --read-from-remote-server, -R ; --raw
- 延遲復(fù)制 參數(shù): CHANGE MASTER TO
Optimizer enhancements
優(yōu)化器增強
- 就是在這里開始的,我們可以用 EXPLAIN 來查看 DELETE,INSERT,REPLACE,UPDATE等 DML 操作的執(zhí)行計劃。 在這之前,它只支持 SELECT 操作。
- 優(yōu)化子查詢
- 主機緩存
Configuration Changes
back_log |
50 |
Autosized using max_connections |
binlog_checksum |
NONE |
CRC32 |
--binlog-row-event-max-size |
1024 |
8192 |
flush_time |
1800 (on windows) |
0 |
innodb_autoextend_increment |
8 |
64 |
innodb_buffer_pool_instances |
1 |
8 (platform dependent) |
innodb_checksum_algorithm |
INNODB |
CRC32 (changed back to INNODB in MySQL 5.6.7) |
innodb_concurrency_tickets |
500 |
5000 |
innodb_file_per_table |
0 |
1 |
innodb_old_blocks_time |
0 |
1000 |
innodb_open_files |
300 |
Autosized using innodb_file_per_table,table_open_cache |
innodb_stats_on_metadata |
ON |
OFF |
join_buffer_size |
128KB |
256KB |
max_allowed_packet |
1MB |
4MB |
max_connect_errors |
10 |
100 |
sync_master_info |
0 |
10000 |
sync_relay_log |
0 |
10000 |
sync_relay_log_info |
0 |
10000 |
5.7
innodb
- 增加 DATA_GEOMETRY 類型來支持空間數(shù)據(jù)類型,以前是用 blob
- innodb 的緩存池 dump 和 load 加強 ,允許按百分比去存儲緩存池中的頁面 參數(shù): innodb_buffer_pool_dump_pct 默認(rèn)值是 25
- InnoDB 增加了對全文解析器插件的支持。
- 支持多線程來刷新緩沖池中的臟頁面 內(nèi)存數(shù)據(jù)頁跟磁盤上數(shù)據(jù)頁內(nèi)容不一致,將內(nèi)存頁稱為臟頁
- 由于文件系統(tǒng) The Fusion-io Non-Volatile Memory (NVM) 在 linux 上提供了原子操作,這導(dǎo)致 innodb 的 doublewrite 變得冗余,所以在該文件系統(tǒng)上,會自動關(guān)閉 doublewrite
- innodb_buffer_pool_size 參數(shù)是動態(tài)的,允許您在不重啟服務(wù)器的情況下調(diào)整緩沖池的大小。
- InnoDB 支持使用 spatial 索引來索引空間數(shù)據(jù)類型
- 支持本地分區(qū)
- 默認(rèn)行格式由 compact 改為 DYNAMIC
其他
一. 支持JSON
從MySQL 5.7.8開始,MySQL支持原生JSON類型。
震驚(居然還有這回事)
二. EXPLAIN 可以用來獲取在命名連接中執(zhí)行的可解釋語句的執(zhí)行計劃
EXPLAIN [options] FOR CONNECTION connection_id;
三. 允許在某個時間點,有多個觸發(fā)事件
之前:對于觸發(fā)器事件(INSERT、UPDATE、DELETE)和操作時間(BEFORE、AFTER)的組合,一個表最多只能有一個觸發(fā)器,即在某個觸發(fā)時間點只能有一個觸發(fā)事件
四. 多源復(fù)制
可將多個服務(wù)器的內(nèi)容備份到一個服務(wù)器
8.0
突然發(fā)現(xiàn)每次更新都在加強這個 innnodb
innodb
- 可以通過 INNODB_CACHED_INDEXES 查看每個索引緩存在 InnoDB 緩沖池中的索引頁數(shù)量
- 可以使用一個新的動態(tài)變量 innodb_deadlock_detect 來禁用死鎖檢測
- redo log 優(yōu)化,可以并發(fā)地寫到日志緩沖區(qū)
- 日志緩沖區(qū)的大小可以通過 innodb_log_buffer_size 動態(tài)調(diào)整
- undo log 不再存放在系統(tǒng)表中
- 支持原子性的 DDL , 確保操作完全成功或者失敗
- 從 MySQL 8.0.20 開始,doublewrite 緩沖區(qū)存儲在 doublewrite 文件中
其他
一. Json 增強
二. 默認(rèn)值
可以為這些類型增加默認(rèn)值 BLOB、TEXT、GEOMETRY 、 JSON
三. 優(yōu)化器增強
- 支持隱藏索引
ALTER TABLE t1 ALTER INDEX i_idx INVISIBLE;
ALTER TABLE t1 ALTER INDEX i_idx VISIBLE;
- 索引支持降序排序
四. 支持窗口函數(shù)
五. 支持正則表達(dá)式
(還有這操作的 )
六. 備份鎖
允許在線備份時使用 DML 語句
總結(jié)
看完這篇文章后,不知道小伙伴們會對哪個更新印象最深呢?
比如 4ye 對這幾點有點小印象~
- 5.6 的全文索引,innodb 頁的大小調(diào)整(4,8,16 KB)三檔,獨立表空間還有執(zhí)行計劃的加強,不僅僅select. 以及結(jié)尾那么大一個表格的參數(shù)
- 5.7 的 JSON,空間數(shù)據(jù)類型 DATA_GEOMETRY ,以及空間索引 spatial 的出現(xiàn),還有doublewrite ,臟頁面的優(yōu)化 和 行格式 DYNAMIC 的出現(xiàn)(以前 compact )
- 8.0的正則,隱藏索引以及它的索引排序
對了 還有,開頭的那兩句~
innodb 就是從 5.5 這個版本開始成為 默認(rèn)的存儲引擎 引入了真 UTF8 ——> utf8mb4
>作者:4ye醬
鏈接:
https://juejin.cn/post/6971697459332382751
來源:掘金