MySQL 8.0.20 安裝新特性以及一些廢棄引數

你好我是李白發表於2020-07-12

8.0 New Feature

(1)授權表現在均為InnoDB

不會再發生一部分成功,一部分失敗的情況,要麼全成功,要麼全部回滾。 

Incompatible Change: The grant tables in the mysql system database are now InnoDB (transactional) tables.

Previously, these were MyISAM (nontransactional) tables. 

This change applies to these tables: user, db, tables_priv, columns_priv, procs_priv, proxies_priv

 Previously, an account-management statement that named multiple users could succeed for some users and fail for others. 

 Now, each statement is transactional and either succeeds for all named users or rolls back and has no effect if any error occurs. 

 The statement is written to the binary log if it succeeds, but not if it fails; in that case, rollback occurs and no changes are made

(2)MySQL開始支援role角色

MySQL now supports roles

(3)引數變化

expire-logs-days                             # 已經廢棄,binlog_expire_logs_seconds取代,預設為30天

innodb_undo_tablespaces              # 已經廢棄,innodb總會建立2個undo表空間,需要增加,使用CREATE UNDO TABLESPACE

internal_tmp_disk_storage_engine # 已經廢棄,8.0.16開始內部磁碟臨時表預設均為InnoDB儲存引擎。

character-set-server=utf8              #現在該引數utf8為utf8mb3別名,以後將改為utf8mb4

innodb_read_only                           # 原來只對InnoDB表生效,無法creating dropping,現在對所有表生效。

 --log-tc-size                                  #The hardcoded memory page size of 8KB for the memory-mapped 

                                                        # transaction coordinator was too small for platforms such as 

                                                        # ARM64 and PowerPC where the page size is much larger.

                                                        # 現在預設為記憶體頁的6倍。

validate_password_check_user_name  # 現在預設開啟  

validate_password                               # 預設開啟,會拒絕與當前使用者名稱相同的密碼。

innodb_deadlock_detect                     # 可以禁止死鎖檢測,防止多執行緒等待同一個鎖引發處理緩慢,可以透過設定 innodb_lock_wait_timeout

innodb_checksum_algorithm             # 在5.6.3中取代了引數innodb_checksums

 innodb_flush_method                        # 現在預設值Unix為fsync,windows為unbuffered

innodb_support_xa                            # 被移除, 預設支援兩階段提交

(4)mysql設定引數新引入SET PERSIST

SET PERSIST                                     # SET引入設定可以動態global引數的同時會將引數持久化到data目錄下的mysqld-auto.cnf檔案,伺服器啟動會載入。

performance_schema.variables_info # 可以顯示最近修改的引數以及源。

(5)物理檔案變化

INFORMATION_SCHEMA.TABLES VERSION:.frm .trg .trn檔案將不存在,取而代之的均為資料字典,version欄位寫死為10,這是最後一個

                                    支援.frm的版本MySQL 5.7的版本號。

(6)mysql_install_db已經被移出

mysql_install_db:已經被移除,初始化資料庫必須使用mysqld --initialize or --initialize-insecure 

(7)引入ibd2sdi新命令列

ibd2sdi:新引入命令列工具,used to extract serialized dictionary information (SDI) from persistent InnoDB tablespaces

(8)支援Hint MERGE NO_MERGE

最佳化器現在支援表級別的hint:MERGE and NO_MERGE

SELECT /*+ MERGE(dt) */ * FROM (SELECT * FROM t1) AS dt;

SELECT /*+ NO_MERGE(dt) */ * FROM (SELECT * FROM t1) AS dt;

(9)支援invisible index

現在支援invisible index,最佳化器不會選擇使用索引,但是會正常維護索引,可以測試移除索引造成影響,又不破壞現有結構。

(10)performance_schema加強

現在performance_schema會收集伺服器錯誤:events_errors_summary_global_by_error, 

                                        events_errors_summary_by_account_by_error, 

                                        events_errors_summary_by_host_by_error, 

                                        events_errors_summary_by_thread_by_error, 

                                        events_errors_summary_by_user_by_error

performance_schema_error_size:控制收集錯誤數量。

(11)InnoDB引擎

--分割槽變化

通用分割槽處理器被移除,MySQL 8.0 InnoDB為唯一支援分割槽處理的儲存引擎,

移除分割槽可以用ALTER TABLE ... REMOVE PARTITIONING 

升級之前,需要把非InnoDB儲存引擎分割槽表使用ALTER TABLE ... ENGINE=INNODB轉換為InnoDB

--InnoDB檔案變化

InnoDB:當在Data directory外建立表空間時,InnoDB不在建立.isl InnoDB動態連結檔案,

        所以不再支援伺服器離線時,修改.isl移動遠端表空間操作,利用redo log定位遠端日誌檔案。

InnoDB:不再支援壓縮臨時表,當row_format=compressed時,innodb_strict_mode為true(default),create temporary table將報錯

(12)新引入資料字典表

INFORMATION_SCHEMA.INNODB_CACHED_INDEXES:顯示索引快取在記憶體中的頁數量。

(13)AUTO_INCREMENT加強

 現在將AUTO_INCREMENT值寫入Redo log,寫入儲存引擎系統表,將自增最大值持久化,設定AUTO_INCREMENT=N不在不生效,

 手工update AUTO_INCREMENT 列也生效。

(14)5.7與8.0升降級說明

(1)To upgrade to MySQL 8.0 from MySQL 5.7, you must perform the upgrade procedure described at Upgrading MySQL.

(2)Downgrading from MySQL 8.0 to MySQL 5.7 is only supported using the logical downgrade method (a mysqldump downgrade).

In-place downgrades are not supported.


參考:

MySQL 8.0 Reference Manual 




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31439444/viewspace-2703977/,如需轉載,請註明出處,否則將追究法律責任。

相關文章