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 不能指定分组列的  [ASC| DESC],要排序只能用 order by

// 与5.0、5.1相关的一些旧属性,不再支持,removed

7.InnoDB不再使用软连接创建数据目录之外的表空间,可以用 variable innodb_directories = ...

 

posted @ 2022-02-18 14:14  雅丽梅  阅读(49)  评论(0)    收藏  举报