參考官方文檔,記錄了部分我關注的新特性。本文僅僅是大概記錄而已,準确描述參考官方文檔:
MySQL 8.0 Reference Manual
歡迎關注我的《深入了解MySQL主從原理 32講 》,如下:
-
資料字典使用事務性存儲引擎。以前版本資料字典存儲在檔案或者非事務引擎表中
參考第14節。
-
支援原子性DDL,進行原子性的資料庫字典更新,
并且binlog的寫入和DDL操作為同一個原子性事務。參考13.1.1節
-
更新過程,安裝新版本後自動進行更新操作,而不需要執行mysql_upgarde.--upgrade
選項用于控制這個功能。 8.0.16
-
安全和賬戶管理
授權表現在是Innodb表,以前都是MyISAM這會活得以下好處:
- 同時更改多個使用者的時候可能某些成功某些失敗。沒有原子性
- 現在有原子性要麼都成功要麼都失敗。13.1.1
- 預設認證插件為caching_sha2_password,性能更好更安全 6.4.1.3
- 支援角色 6.2.10
- 資料總管 8.12.5
- Innodb 增強
- 自增字段修改加入redo 持久化
- 如果修改的值大于自增則持久化
- innodb_deadlock_detect可以關閉死鎖檢測
- INFORMATION_SCHEMA.INNODB_CACHED_INDEXES可以檢視緩存的資料
- 支援for update nowait操作
- innodb使用mysql的資料字典 14
- 臨時表存放到ibtmp1目錄
- 分區表使用native,支援online DDL
- mysql系統表和變量現在放到innodb tablespace中叫做mysql.ibd
- innodb_undo_log_truncate預設開啟
- innodb_rollback_segments參數含義,從全局變為每個undo表空間
- innodb_max_dirty_pages_pct_lwm參數預設值修改為10
- innodb_max_dirty_pages_pct從75增加到90
- innodb_auto_lock_mode預設設定為2,自增鎖降低
- innodb_dedicated_server參數加入,預設是OFF,開啟用于自動配置一些參數,包含:
innodb_buffer_pool_size
innodb_log_file_size
innodb_flush_method
- INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF視圖可以檢視表空間類型
- Innodb支援原子性DDL
-
SDI加入Serialized dictionary information (SDI) ,除了臨時檔案和UNDO表空間,其他資料
檔案都包含,SDI 資料是一個容易的表中繼資料,用于在資料字典損壞的情況下直接從表空間中
抽取中繼資料,是壓縮格式JSON
-
redo 記錄優化
開啟獨占的redo寫線程
使用者線程将髒資料寫入flush list使用relaxed order
新參數加入
innodb_log_wait_for_flush_spin_hwm:定義最大平均日志寫入時間
innodb_log_spin_cpu_abs_lwm:定義最小CPU使用總數
innodb_log_spin_cpu_pct_hwm:定義最大CPU使用總數
這3個參數需要再研究
- innodb_log_buffer_size:可動态修改回收記憶體
- undo 日志對 small LOB data支援 8.0.12
- 瞬間增加字段支援,算法為ALGORITHM=INSTANT,優先使用INSTANT算法
-
新增temptable存儲引擎用于參數internal_tmp_mem_storage_engine參數,允許的值包含
temptable 預設,memory是以前的。8.0.13支援blob資料類型
- 關閉參數innodb_buffer_pool_in_core_file
-
8.0.13使用者建立的臨時表和内部臨時表存儲在臨時表空間中,當session斷開的時候
ibtmp1将會釋放,但是不會将磁盤空間反還給作業系統,新增參數 innodb_temp_tablespaces_dir
設定為#innodb_tmp 當session斷開的時候将會截斷然後将空間釋放到pool中,反還給
作業系統。
- innodb_dedicated_server 可以動态配置設定部分參數 8.0.14
- innodb_parallel_read_threads參數并行進行聚集索引掃描用于優化check table性能
- 如果超過temptable_max_ram記憶體大小将會使用臨時檔案或者innodb 表,預設使用mmap進行映射檔案使用 temptable_use_mmap進行控制。新增的臨時表引擎temptable和老的memory作為對比老的還是tmp_table_size or max_heap_table_size的大值
- innodb_spin_wait_pause_multiplier 參數加入
- innodb_parallel_read_threads 參數控制并發執行
-
字元集變化
預設的字元集使用utf8mb4而不是latin1,包含新增的校驗字元集utf8mb4_ja_0900_as_cs
- 優化器增強
- 不可見索引
- 降序索引
- 函數索引
-
類型傳回檢測
比如c是一個TINYINT UNSIGNED 占用1位元組最大255條件使用c < 256 恒成立,如果
c >= 255轉換為c=255
- 8.0.16 半連接配接支援EXISTS子查詢
- 8.0.17 反半連接配接支援not in/not EXISTS
- WITH AS文法支援
-
開窗函數
RANK(), LAG(), NTILE()
-
配置管理端口
如果達到 max_connections設定連接配接管理端口進行管理
- 需要配置admin_address為IP值,預設不開啟
- 需要配置admin_port端口預設33062
- 沒有連接配接限制
- 需要SERVICE_CONNECTION_ADMIN權限
- 8.0.17 innodb歸檔支援
- 8.0.17 innodb克隆插件
- hostname支援上限從60到255
作者微信:gp_22389860