简述
在Oracle MySQL团队的推动下,MySQL 8.0发生了巨大的变化和修改。
物理文件已更改。例如,*.frm,* .TRG,*.TRN和* .par 不再存在。添加了大量的新特性,如通用表表达式(Common Table Expressions CTE),窗口函数(Window Functions),不可见索引( Invisible Indexes),正则表达式(regexp) -MySQL8.0现在已经完全支持Unicode,且具有多字节安全特性。数据字典也发生了变化。它现在与一个事务性数据字典合并,该字典存储有关数据库对象的信息。与以前的版本不同,字典数据存储在元数据文件和非事务表中。
安全性得到了改进,caching_sha2_password认证方式取代了之前的mysql_native_password认证方式,成为默认的身份验证方式。它提供了更强大的灵活性,而且也加强了安全性,即它要求必须使用安全连接或通过RSA密钥对实现的支持密码交换的未加密链接。
本篇暂不讨论其新特性,而是将其性能与MySQL 5.7进行对比,看看它是如何改进的。
Server Setup and Environment服务器设置和环境
对于此基准测试,我打算使用基于AWS EC2最小配置的系统环境:
· 实例类型:t2.xlarge实例
· 存储:gp2(SSD存储,最小100 IOPS,最大16000 IOPS)
· 虚拟CPU:4
· 内存:16GiB
· MySQL5.7版本:MySQLCommunity Server (GPL) 5.7.24
· MySQL8.0版本:MySQLCommunity Server - GPL 8.0.14
在这个基准测试中,我也针对一些参数项的取值进行了配置,它们是:
· innodb_max_dirty_pages_pct= 90 ##这是MySQL 8.0中的默认值。
· innodb_max_dirty_pages_pct_lwm= 10 ##这是MySQL 8.0中的默认值
· innodb_flush_neighbors=0
· innodb_buffer_pool_instances=8