1. 程式人生 > 其它 >MySQL 01. What is New in MySQL8.0?

MySQL 01. What is New in MySQL8.0?

總體講,並沒有什麼非常亮眼的改進,比較值得稱讚的只有 data directory!

一、新增特性

1.system data directory:取代engine data diractory. 並且實現“事務、redo log、data directory”三者的原子操作

  即不會再有這樣的情況:明明已經刪除了一個表,但是data directory進行更新時宕機,那麼就會導致這個表既無法再建,也無法再刪除;

2.安全:

  mysql.user engine = InnoDB;mysql 使用獨立的表空間mysql.ibd,located in data dir;

  role privilege: session 別

  user categories :使用者分類管理

  privileges partial revoke

  grant 語句中,隱藏授權者和密碼,但是不影響複製;

  密碼策略更嚴謹,且有雙密碼策略;

  schema/ table encryption

3.資源分組化管理:授予不同的workload

4.InnoDB:

  auto-incre persist

  index tree crash safe : add flag to redo

  memocached support range query and multi-get

  dynamic deadlock detect

  information_schema.innodb_cached_indexes:可以查詢緩衝池中的索引頁

  select ... for share/ update :nowait / skip locked

  online undo keyspaces define, more rollback segments

  redo log :實現並寫

5.algorithm = INSTANT:僅支援data directory,實現瞬時的、無lock的update

6.optimizer:

  隱藏索引:可用於測試優化器

  降序索引

  in / exists:等值 + union

  臨時表空間:緩衝池中,engine = TempTable;disk上,engine=InnoDB;

7.redo log archiving:熱備期間,防止redo被覆寫

8.clone plugin:remote instance/ replication effient/ distributed recovery

9.等值連線時,hash join >> block-nested loop algorithm,連線列索引不是必須的

  相關引數:optimizer_switch, join_buffer_size, open_files_limit(溢位臨時表在disk上的檔案限制)

  分析詳情:explain [ format=TREE | analyze ] sql statement; 分析器計算的成本可以和實際查詢成本進行比較!

10.檢視new可以基於現有的檢視old建立,old如果被刪除,則new亦不可用;old刪除之後再建,new亦可用;

11.cast函式注入查詢:

二、移除舊特性

1.innodb_locks_unsafe_for_binlog 與 RC level相似,移除

2.information_schema中與Innodb相關檢視,修改為基於data directory的系統檢視,重新命名;

3.禁止grant建立user,identified with auth_plugin by 'password',function password() 移除;

4.QC相關全部移除:其實可以作為引數提供給優化器,不用每個SQL都考量最佳執行計劃

5.sync_frm removed:frm is obsolete => data directory

6.Group By order by [ASC| DESC | NULL], default NULL

// 與5.0、5.1相關的一些舊屬性,不再支援,removed

7.InnoDB不再使用軟連線建立資料目錄之外的表空間,可以用 variable innodb_directories = ...