MySQL 5.6, 5.7, 8.0版本的新特性彙總大全
MySQL 5.6
1).支援GTID複製
2).支援無損複製
3).支援延遲複製
4).支援基於庫級別的並行複製
5).mysqlbinlog命令支援遠端備份binlog
6).對TIME, DATETIME和TIMESTAMP進行了重構,可支援小數秒。DATETIME的空間需求也從之前的8個位元組減少到
5個位元組
7).支援Online DDL。ALTER操作不再阻塞DML。
8).支援可傳輸表空間(transportable tablespaces)
9).支援統計資訊的持久化。避免主從之間或資料庫重啟後,同一個SQL的執行計劃有差異
10).支援支援全文索引
11).支援InnoDB Memcached plugin
12).EXPLAIN可用來檢視DELETE,INSERT,REPLACE,UPDATE等DML操作的執行計劃,在此之前,只支援SELECT操作
13).分割槽表的增強,包括最大可用分割槽數增加至8192,支援分割槽和非分割槽表之間的資料交換,操作時顯式指定分割槽
14).Redo Log總大小的限制從之前的4G擴充套件至512G
15).Undo Log可儲存在獨立表空間中,因其是隨機IO,更適合放到SSD中。但仍然不支援空間的自動回收
16).支援線上和關閉MySQL時dump和load Buffer pool的狀態,避免資料庫重啟後需要較長的預熱時間
17).InnoDB內部的效能提升,包括拆分kernel mutex,引入獨立的重新整理執行緒,可設定多個purge執行緒
18).最佳化器效能提升,引入了ICP,MRR,BKA等特性,針對子查詢進行了最佳化
MySQL5.7
1).支援組複製和InnoDB Cluster
2).支援多源複製
3)支援增強半同步(AFTER_SYNC)
4).支援基於表級別(LOGICAL_CLOCK)的並行複製
5).支援線上開啟GTID複製
6).支援線上設定複製過濾規則
7).支援線上修改Buffer pool的大小
8).支援在同一長度編碼位元組內,修改VARCHAR的大小隻需修改表的後設資料,無需建立臨時表
9).支援可設定NUMA架構的記憶體分配策略(innodb_numa_interleave)
10).支援透明頁壓縮(Transparent Page Compression)
11).支援UNDO表空間的自動回收
12).支援查詢最佳化器的增強和重構
13).可檢視當前session正在執行的SQL的執行計劃(EXPLAIN FOR CONNECTION)
14).引入了查詢改寫外掛(Query Rewrite Plugin),可在服務端對查詢進行改寫
15).EXPLAIN FORMAT=JSON會顯示成本資訊,這樣可直觀的比較兩種執行計劃的優劣
16).引入了虛擬列,類似於Oracle中的函式索引
17).新例項不再預設建立test資料庫及匿名使用者
18).引入ALTER USER命令,可用來修改使用者密碼,密碼的過期策略,及鎖定使用者等
19).mysql.user表中儲存密碼的欄位從password修改為authentication_string
20).支援表空間加密
21).最佳化了Performance Schema,其記憶體使用減少
22).Performance Schema引入了眾多instrumentation。常用的有Memory usage instrumentation,可用來檢視
MySQL的記憶體使用情況,Metadata Locking Instrumentation, 可用來檢視MDL的持有情況,
Stage Progress instrumentation,可用來檢視Online DDL的進度
23).同一觸發事件(INSERT,DELETE,UPDATE),同一觸發時間(BEFORE,AFTER),允許建立多個觸發器
在此之前,只允許建立一個觸發器
24).InnoDB原生支援分割槽表,在此之前,是透過ha_partition介面來實現的
25).分割槽表支援可傳輸表空間特性。
26).整合了SYS資料庫,簡化了MySQL的管理及異常問題的定位
27).原生支援JSON型別,並引入了眾多JSON函式
28).引入了新的邏輯備份工具mysqlpump,支援表級別的多執行緒備份
29).引入了新的客戶端工具mysqlsh,其支援三種語言:JavaScript, Python and SQL。兩種API:X DevAPI,
AdminAPI,其中,前者可將MySQL作為文件型資料庫進行操作,後者用於管理InnoDB Cluster
30).mysql_install_db被mysqld --initialize代替,用來進行例項的初始化
31).原生支援systemd
32).引入了super_read_only選項
33).可設定SELECT操作的超時時長(max_execution_time)
34).可透過SHUTDOWN命令關閉MySQL例項。
35).引入了innodb_deadlock_detect選項,在高併發場景下,可使用該選項來關閉死鎖檢測
36).引入了Optimizer Hints,可在語句級別控制最佳化器的行為,如是否開啟ICP,MRR等,在此之前,只有Index Hints
37).GIS的增強,包括使用Boost.Geometry替代之前的GIS演算法,InnoDB開始支援空間索引
MySQL8.0
1).引入了原生的,基於InnoDB的資料字典。資料字典表位於mysql庫中,對使用者不可見,同mysql庫的其它系統表一樣,
儲存在資料目錄下的mysql.ibd檔案中。不再置於mysql目錄下
2).重構了INFORMATION_SCHEMA,其中部分表已重構為基於資料字典的檢視,在此之前,其為臨時表
3).PERFORMANCE_SCHEMA查詢效能提升,其已內建多個索引
4).支援不可見索引(Invisible index)
5).支援降序索引
6).最佳化器加入了直方圖功能,對比Oracle
7).支援公用表表示式(Common table expressions)
8).支援視窗函式(Window functions)。
9).支援角色(Role)功能,對比Oracle
10).支援資源組(Resource Groups),可用來控制執行緒的優先順序及其能使用的資源,目前,能被管理的資源只有CPU
11).引入了innodb_dedicated_server選項,可基於伺服器的記憶體來動態設定innodb_buffer_pool_size,
innodb_log_file_size和innodb_flush_method
12).支援秒加欄位(Instant add column)功能
13).JSON欄位的部分更新(JSON Partial Updates)
14).支援自增主鍵的持久化
15).支援可持久化全域性變數(SET PERSIST)
16).預設字符集由latin1修改為utf8mb4
17).預設開啟UNDO表空間,且支援線上調整數量(innodb_undo_tablespaces)。在MySQL 5.7中,預設不開啟,
若要開啟,只能初始化時設定
18).支援備份鎖
19).Redo Log的最佳化,包括允許多個使用者執行緒併發寫入log buffer,可動態修改innodb_log_buffer_size的大小
20).預設的認證外掛由mysql_native_password更改為caching_sha2_password
21).預設的記憶體臨時表由MEMORY引擎更改為TempTable引擎,相比於前者,後者支援以變長方式儲存VARCHAR,
VARBINARY等變長欄位。從MySQL 8.0.13開始,TempTable引擎支援BLOB欄位
22).Grant不再隱式建立使用者
23).SELECT ... FOR SHARE和SELECT ... FOR UPDATE語句中引入NOWAIT和SKIP LOCKED選項,解決電商場景熱點行問題
24).正規表示式的增強,新增了4個相關函式,REGEXP_INSTR(),REGEXP_LIKE(),REGEXP_REPLACE(),
REGEXP_SUBSTR()
25).查詢最佳化器在制定執行計劃時,會考慮資料是否在Buffer Pool中。而在此之前,是假設資料都在磁碟中
26).ha_partition介面從程式碼層移除,如果要使用分割槽表,只能使用InnoDB儲存引擎
27).引入了更多細粒度的許可權來替代SUPER許可權,現在授予SUPER許可權會提示warning
28).GROUP BY語句不再隱式排序
29).information_schema中的innodb_locks和innodb_lock_waits表被移除,取而代之的是performance_schema中的
data_locks和data_lock_waits表
30).引入performance_schema.variables_info表,記錄了引數的來源及修改情況
31).增加了對於客戶端報錯資訊的統計(performance_schema.events_errors_summary_xxx)
32).可統計查詢的響應時間分佈(call sys.ps_statement_avg_latency_histogram())
33).支援直接修改列名(ALTER TABLE ... RENAME COLUMN old_name TO new_name)
34).使用者密碼可設定重試策略(Reuse Policy)
35).移除PASSWORD()函式。這就意味著無法透過“SET PASSWORD ... = PASSWORD('auth_string') ”命令修改使用者密碼
36).程式碼層移除Query Cache模組,故Query Cache相關的變數和操作均不再支援
37).BLOB, TEXT, GEOMETRY和JSON欄位允許設定預設值
38).可透過RESTART命令重啟MySQL例項
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2650661/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL8.0-新特性彙總MySql
- MySQL 8.0 新特性梳理彙總MySql
- MySQL 5.7 新特性大全和未來展望MySql
- MySQL5.6版本的新特性介紹MySql
- MySQL 8.0 新特性MySql
- MySQL 5.7新特性MySql
- MySQL · 特性分析 · MySQL 5.7新特性系列一MySql
- MySQL 8.0新特性概覽MySql
- 關於Mysql5.7高版本group by新特性報錯MySql
- 【MySQL】5.7新特性之一MySql
- 【MySQL】5.7新特性之二MySql
- 【MySQL】5.7新特性之三MySql
- 【MySQL】5.7新特性之四MySql
- 【MySQL】5.7新特性之五MySql
- 【MySQL】5.7新特性之六MySql
- 【MySQL】5.7新特性之七MySql
- MySQL 5.7 新特性詳解MySql
- MySQL 5.6的72個新特性(譯)MySql
- mysql5.6複製新特性MySql
- MySQL8.0-新特性-DescendingIndexMySqlIndex
- MySQL·8.0新特性·InvisibleIndexMySqlIndex
- MySQL 8.0新特性更新介紹MySql
- MySQL5.7新版本的運維,效能和新特性介紹MySql運維
- MySQL:5.6 升級 5.7MySql
- 【Mysql】mysql5.7新特性之-sys schema的作用MySql
- 【MySQL】MySQL5.6新特性之Batched Key AccessMySqlBAT
- 【MySQL】MySQL5.6新特性之crash-safeMySql
- MySQL8.0 新特性 top10MySql
- Mysql8.0部分新特性MySql
- mysql8.0新特性--隱藏索引MySql索引
- C# 語言歷史版本特性(C# 1.0到C# 8.0彙總)C#
- C#語言歷史版本特性(C# 1.0到C# 8.0彙總)C#
- MySQL8.0新特性-臨時表的改善MySql
- MySQL 8.0 18個管理相關的新特性MySql
- MySQL在Windows和Linux平臺上多版本多例項安裝配置方法(5.5、5.6、5.7、8.0)MySqlWindowsLinux
- MySQL5.6 GTID新特性實踐MySql
- CentOS tengine mysql 5.7 php 5.6CentOSMySqlPHP
- MySQL sys庫常用SQL彙總大全MySql