当前位置: 首页 > 科技观察

MySQL8.0.0数据库开发里程碑发布

时间:2023-03-12 09:03:19 科技观察

MySQL开发团队12日宣布发布MySQL8.0.0开发里程碑版本(DMR)!可能有人会疑惑为什么MySQL从5.x跳到了8.0。事实上,MySQL5.x系列已经延续了很多年。被Oracle收购前是5.1,收购后一直维持在5.x,如5.5、5.6、5.7等。其实如果按照原来的发布节奏,5.6.x可以看成是6.x,5.7.x可以看成是7.x。所以,只是改变了版本命名方式。不过,本次发布的MySQL8.0.0开发版还是有不少亮点。MySQL8.0.0的亮点是事务型数据字典,它完全脱离了MyISAM存储引擎,实际上是把数据字典放到了InnoDB中的一些表中。从此,不再需要FRM、TRG、PAR文件!InformationSchema现在是一个数据字典表视图出现。原则上MyISAM数据表类型可以完全不要,所有的系统表都可以放在InnoDB中。SQL角色角色是权限的集合。您可以创建角色,向用户授予和删除角色。这对于权限管理很方便。utf8mb4字符集将成为默认字符集并支持Unicode9。默认字符集将从latin1更改为utf8mb4,默认排序规则将从latin1_swedish_ci更改为utf8mb4_800_ci_ai。不可见索引有些索引可以设置为不可见,这样SQL优化器就不会使用它,但它会在后台继续更新。当需要时,可以随时恢复可见性。可以对二进制数据进行位运算,不仅可以对BIGINT进行位运算,从8.0开始还可以对[VAR]BINARY/[TINY|MEDIUM|LONG]BLOB进行位运算。改进了IPv6和UUID的操作INET6_ATON()和INET6_NTOA()现在可以执行位操作,因为INET6_ATON()现在返回VARBINARY(16)数据类型(128位)。改进了UUID操作,引入了三个新函数UUID_TO_BIN()、BIN_TO_UUID()和IS_UUID()。MySQL没有特殊的IPv6和UUID数据类型,而是将它们存储为VARBINARY(16)数据类型。持久性全局变量您可以使用SETPERSIST来设置持久性全局变量,即使服务器重新启动,这些变量也会持久存在。对性能数据库PerformanceSchema的改进,比如在性能数据库中增加了100多个索引,可以更快地检索。重构的SQL分析器对SQL分析器的持续增量改进。旧的解析器由于语法复杂和自上而下的分析而存在严重的局限性,难以维护和扩展。成本模型InnoDB缓冲区现在可以估计主内存缓存中有多少表和索引,这允许优化器在选择访问方法时知道数据是可以存储在内存中还是必须存储在磁盘上。直方图通过使用直方图,用户或DBA可以对数据分布进行统计,可用于查询优化以找到优化的查询解决方案。改进的扫描性能改进了InnoDB范围查询的性能,可以将全表查询和范围查询的性能提高5-20%。重构BLOB重构BLOB加速片段读取/更新操作,这可以加速对JSON数据的操作。持久化自增值InnoDB会将自增序列的最后一个值持久化到redolog中。此改进还修复了一个非常古老的错误#199。临时表取消了对压缩临时表的支持,将临时表的元数据存储在内存中。目前8.0.0下载还是开发版。如果你想体验和测试最新的特性,你可以从dev.mysql.com[3]下载各个平台的安装包。但是MySQL的包越来越大,在Linux平台上打包后的binary接近1GB。如果是生产环境使用,请在8.0进入稳定版前继续使用5.7系列。目前最新的版本是5.7.15GA版——这个才600多M。***的源码放在了GitHub上,有兴趣的朋友可以去看看,很多都是中国人贡献的。