MySQL 最新版本已更新到8.0.19(这篇笔记写完的时候更新版本是8.0.18),下面列举了几个重要新特性,可落地到实际生产中,可供参考,更加详细的新特性,可以查看mysql官方文档的changelog。
一、运维效率提升
1、快速加列功能
功能:修改元数据,毫秒级别快速加列
解决场景:解决改表加列时耗时长,从库延迟和binlog过多导致磁盘压力的问题。例如评论给9000+张表加列,需要改5天,并且有大量的从库延迟和磁盘报警,使用本特性可以从根本上解决此问题
2、clone plugin
功能:允许InnoDB在本地或从远程MySQL服务器实例克隆数据
解决场景: 不依赖外部备份和扩容程序,操作简单、成功率高
3、参数设置持久化
功能:SET PERSIST var=value;之后修改内存中的参数也持久化到文件中,下次重起生效
解决场景:修改内存参数后未落地到文件中,重启后失效的问题
4、管理连接端口
功能:MySQL server 为管理连接单独配置了一个端口
解决场景:实例连接数达到max_connections后,不能连接数据库
5、并行复制增强
功能:基于write_set的行并行复制(5.7.22 也引入了)
解决场景:相较于5.6基于库,5.7的logical_clock 并行复制,8.0 此特性彻底解决MySQL多年被人诟病的复制延迟问题
6、用户管理
功能:添加角色权限,为角色授权,然后将角色赋权给用户
解决场景:对用户进行功能分类,节省运维管理成本
二、MySQL使用优化
1、降序索引
功能:降序索引键值以降序存储
解决场景:order by a asc,b desc之前不走索引,通过降序索引的方式可以走索引,提升效率
2、直方图
功能:支持收集直方图信息
解决场景:主要解决在数据倾斜的情况下,优化器选择最优的执行方式
3、对于JSON的支持
功能:新加JSON扩展语法,改进排序和部分更新
解决场景:业务使用MySQL来存取JSON类型的数据,使用更友好
三、MySQL内部优化
1、crash safe ddl
功能:InnoDB表的DDL支持事务原子性,将DDL操作写入数据字典表 mysql.innodb_ddl_log 中用于回滚操作
解决场景:解决之前DDL操作非原子性的问题
2、InnoDB redo日志归档
功能:备份速度跟不上redo log生成的速度,结果导致redo log被覆盖了,备份就无法保证一致性
解决场景:备份结束后可以利用这期间生成的归档进行数据恢复
3、InnoDB redo设计优化
功能:redo_log_buffer 时并行写入
解决场景:高并发场景下,提升写入效率