mysql8.0简介

前言:mysql8.0是非常大的一个版本,在这里我只是抛砖引玉的带大家一起看一看,感兴趣的同学可以自己进行深入的学习,所以我只讲一些对我们工作中可能有帮助的功能,还有一些“有趣”的功能。

MySQL 5.7 到 8.0,Oracle 官方跳跃了两个大的版本号,随之而来的就是在 MySQL 8.0 上做了许多重大更新,在往企业级数据库的路上大步前行,全新 Data Dictionary 设计,支持 Atomic DDL,全新的版本升级策略,安全和账号管理加强,InnoDB 功能增强等。

MySQL 8.0 具体版本更新内容简单列举:

1. 数据字典

MySQL 8.0 摒弃了 Server Layer 定义的 FRM 文件和其它非事务表,使用了一组 InnoDB 表来 保存数据字典,支持事务特性。

2. Atomic DDL

在数据字典支持事务特性的基础上,8.0 增加了一个 DDL log 字典表,用来协调在DDL 过程中,对数据字典,文件系统 和 事务系统的修改,做到原子性。

3. Auto increment 持久化

在 InnoDB 引擎中,新增了一个引擎私有的系统表 innodb_dynamic_metadata,自增值就保存 在这个表里,在对每张表进行修改 auto increment 值的时候,都使用 redo log 进行保护,在做

checkpoint的时候,持久化到这个系统表中,保证下次重启后,auto increment 能够从持久化中恢复出来,并且不受事务上下文回滚而影响。

4. 优化器和对象相关  

1) 支持 invisible index,方便用户和DBA调试。

2)descending indexes,提升降序扫描的效率。 

3)Common table expressions,支持 with 语法完成。 

4)Window functions,增加大量窗口函数

5)Regular expression,重新设计了正则表达式的支持。

5. Json加强

在Json上,8.0 增加了更多的功能性。

6. 安全和账号管理

账号方面,从 8.0 开始,支持 role 对权限进行便捷管理,以及新增多个系统权限,分别对应新 增了 ROLE_EDGES,GLOBAL_GRANTS 两个系统表;mysql schema 下的涉及权限和用户相关的表 更改成 InnoDB 引擎,支持事务特性,保证了账号管理语句的原子性。

认证方面,caching_sha2_password 作为默认的认证 plugin,以提升安全,但要注意并不能和 8.0 之前的client进行兼容。

链路加密,如果编译了OpenSSL 1.1.1 及以上,MySQL 8.0 SSL 将支持到 TLSv1.3 版本。

系统账号,在 8.0.16 新增 SYSTEM_USER 权限,用于区分 系统账号还是普通账户,可以对用户 进行分类管理。

7. Lock

SELECT ... FOR SHARE 和 SELECT ... FOR UPDATE 新增了 NOWAIT 和SKIP LOCKED 语法,减少长时间和非必要的阻塞。

8. 死锁检测

在高并发的情况下,InnoDB 引擎中对于事务锁的死锁检测,将是影响性能的重要因素,

8.0 后提供了一个参数innodb_deadlock_detecthttps://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_deadlock_detect,用来打开或者关闭引擎的死锁检测,在业 务能够明确相关风险的情况下,关闭死锁检测,能大幅提升并发能力。

9. 临时表

在InnoDB引擎中,用户创建的临时表将统一到 ibtmp 文件的临时表空间中; 对于系统运行过程中产生内存临时表,8.0后启用了新的TempTable引擎,支持 blob 字段,功能上优于 memory ngine。

10. Instant add column

InnoDB 解决了长期困扰 DBA 的加字段要 copy 整张表数据的问题。现在可以快速的增加字段,只修改数据字典,而不用修改表中的记录本身。

11. Redo优化

Redo的写入一直是 InnoDB 高并发情况下的瓶颈,8.0 开始:

用户线程可以并发的copy redo 日志到 log buffer中

用户线程可以以更松散的方式把 dirty block 加入到脏块链表中

独立的写线程完成 redo 的持久化

12. Partial update on lob

InnoDB 继续优化 partial update on lob data,对于仅仅修改很少字节的 lob 字段,能够大幅 减少 undo data,并提升效率。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章主要涉及到MySQL的知识点: 索引(包括分类及优化方式,失效条件,底层结构) sql语法(join,un...
    一根薯条阅读 2,791评论 0 8
  • InnoDB体系架构 上图简单显示了InnoDB存储引擎的体系架构图中可见,InnoDB存储引擎有多个内存块,可以...
    Rick617阅读 4,093评论 0 6
  • 主要来自 《高性能MySQL(第3版)》 《MySQL管理之道:性能调优、高可用与监控(第2版)》 《MyS...
    FengXQ阅读 590评论 0 0
  • 1)介绍 PerconaXtraBackup(简称PXB)是Percona公司开发的一个用于MySQL数据库物理热...
    温东阅读 2,588评论 0 6
  • 在夜深人静的时候,我会想自己为什么不放弃,不像别人一样回家好好休息,为什么要把工作和生活混为一谈。为什么被气得哭了...
    寻梅客阅读 199评论 0 3