MySQL 8部分新特性(8.0.17)
參考官方文件,記錄了部分我關注的新特性。本文僅僅是大概記錄而已,準確描述參考官方文件:
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使用總數
- 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_buffer_pool_size
innodb_log_file_size
innodb_flush_method -
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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2656414/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql 8.0.17 分割槽特性測試MySql
- Mysql8.0部分新特性MySql
- MySQL 8 新特性之Clone PluginMySqlPlugin
- MySQL 8 新特性之Invisible IndexesMySqlIndex
- MySQL-18 MySQL8其他新特性MySql
- ES7 ES8 的新特性(部分)
- Java 8 新特性Java
- Java 8 新特性Java
- MySQL8 非常有用的一個新特性MySql
- MySQL 8.0 新特性MySql
- MySQL 8 新特性之自增主鍵的持久化MySql持久化
- php8新特性PHP
- Java 8 新特性 StreamJava
- JAVA8新特性Java
- JDK8新特性JDK
- Java8 新特性Java
- MySQL 8 新特性之持久化全域性變數的修改MySql持久化變數
- Java8新特性 - LambdaJava
- Java 8 新特性---Optional類Java
- Java8的新特性Java
- JDK8的新特性JDK
- JAVA8新特性用法Java
- 第十二節:MySQL8.x版本新特性和變化MySql
- mysql5.1的新特性MySql
- MySQL8.0-新特性-DescendingIndexMySqlIndex
- Mysql8.0.17資料庫安裝圖文教程MySql資料庫
- Java8新特性實踐Java
- Java 8 新特性之方法引用Java
- java8新特性stream流Java
- iOS 8 之後UINavigationController新特性iOSUINavigationController
- JDK8新特性詳解JDK
- JDK8新特性之stream()JDK
- PHP8 新特性實踐PHP
- Angular 8的新特性介紹Angular
- Java 8新特性(三):Optional類Java
- Java8 新特性詳解Java
- Java8新特性系列-LambdaJava
- Java8新特性之:OptionalJava