MySQL 5.5, 5.6, 5.7, 8.0 特性对比
MySQL 5.5 特性
- 性能提升:默认InnoDB plugin引擎,表与索引存储在表空间,表大小无限制。
- 支持dynamic(主键缓存内存)与compressed(支持数据及索引压缩)行格式。
- InnoDB file format为Barracuda。
- 优化器改进:ICP,BKA,MRR。
- 支持半同步Replication,增加Relay Log自我修复功能。
- 引入红-黑树做插入排序的中间数据结构。
- 线程池分组排队限流。
MySQL 5.6 特性
- 默认参数改变:Back_log 排队队列,支持全文索引。
- 支持online DDL create,alter,drop。
- 可以在建表时指定表空间位置。
- 整合了memcached API。
- innodb只读事务。
- 减少内部数据结构开销。
- 统计信息持久化,explain语句支持insert,update,delete,replace操作,并支持JSON格式。
MySQL 5.7 特性
- 安全性:用户表mysql.user的plugin字段不允许为空,默认值为mysql_native_password。
- 增加密码过期机制,提供SSL安全访问配置,并且默认连接即采用SSL的加密方式。
- 灵活性:从5.7.8版本开始,也提供了对JSON的支持。
- 易用性:MySQL 5.7可以explain一个正在运行的SQL。
- 可用性:在线设置复制的过滤规则、在线修改buffer pool的大小、在线开启GTID。
- 性能:临时表的性能改进、加速连接处理、复制性能的改进(支持多线程复制)。
- 严格性改变:默认启用STRICT_TRANS_TABLES模式。
- 其他被默认启用的sql mode还有NO_ENGINE_SUBSTITUTION。
MySQL 8.0 特性
- 新的系统字典表:所有的元数据都用InnoDB引擎进行存储。
- 安全和用户管理:新增caching_sha2_password认证插件,并且是默认的身份认证插件。权限支持role,新增密码历史记录功能。
- innodb 增强:新增INFORMATION_SCHEMA.INNODB_CACHED_INDEXES,InnoDB临时表都将在共享临时表空间ibtmp1中创建等。
- 支持 ALTER TABLESPACE … RENAME TO 语法,支持使用innodb_directories选项在服务器脱机时将表空间文件移动或恢复到新位置。
- 更好支持文档型数据库和JSON,不可见索引,支持降序索引,支持RANK(), LAG()、NTILE()等函数,正则表达式增强。
- 配置文件增强:MySQL 8.0版本支持在线修改全局参数持久化。
- 直方图:MySQL 8.0 版本开始支持期待已久直方图。
- InnoDB性能提升:废除buffer pool mutex,行缓存,改进扫描性能。
- 成本模型:InnoDB缓冲区可以估算缓存区中的有多少表和索引,这可以让优化器选择访问方式时知道数据是否可以存储在内存中还是必须存储到磁盘上。