老牌关联式资料库MySQL,在去年就进入8.0候选版,现在终于释出了正式版。在8.0中新增了非常多的功能,不只在架构上持续增进SQL与NoSQL的整合,在SQL、JSON、正规表示式或是GIS等开发人员关心的功能也都有强化,而且为了让MySQL可以储存表情符号Emojis,还把UTF8MB4订为8.0预设的字符集。
资料库的效能是开发者最关心的问题之一,MySQL 8.0增强了读写工作负载的能力,并加速了热点资料的读取速度。MySQL 8.0比起5.7版本,更加擅长操作高负载的工作,官方表示,在4个并行用户的密集读写工作下,其效能是与MySQL 5.7的两倍。
在MySQL 5.7中,唯读的可扩展性比起之前版本大幅提升,但MySQL 8.0却是读写负载的可扩展性同时提升,而这样的效能提升来自MySQL对于硬体的更高利用率。
另外,企业的储存架构为配合应用,常需要併用SQL与NoSQL资料库,但是同时运作不同的资料库解决方案,带来许多技术挑战与风险。官方表示,MySQL 8.0在储存、结构、协定、API以及工具都有更完整的支援,希望可以解决企业需要多资料库的窘境。
为此MySQL 8.0强化了SQL与NoSQL资料库的相关功能,开发人员可以选择传统的关联式资料库模型,或是JSON文件资料库模型,而MySQL 8.0也提供桥接SQL与JSON文件资料的函式,并让使用者以SQL的方式浏览JSON文件资料库的内容。
MySQL 8.0新增了多项新SQL语法支援,其中提供了SQL视窗函式(Window Function),这个在SQL 2003就定义的标准SQL语法。这是类似COUNT或是SUM分组聚合函式的功能,视窗函式能对数个资料列进行一系列计算,只不过分组聚合函式会将结果併为单一列,而视窗函式则是能将结果写入聚合影响的每一列中。此外还支援递迴一般表格运算式(Recursive Common Table Expression),这可以看作是强化版的衍生表格,因为这项功能可以让衍生表格被多次参照。
而对于地理资讯系统(GIS)支援方面,还包括支援空间参照系统(SRS)的元资料、SRS感知空间资料型态、空间索引与空间函式,简言之,MySQL 8.0现在可以理解地球表面的经纬度座标,能轻易地计算出地表任两点座标的距离。