1、性能:8.0的速度要比5.7快2倍,8.0在以下方面带来了更好的性能:读/写负载、IO密集型工作负载、高竞争("hot spot"热点竞争问题)工作负载。
2、NoSQL:5.7 版本开始提供NoSQL存储功能,目前在8.0版本中这部分功能得到更大的改进。该项功能删除取消了对独立的NoSQL文档数据库的需求,而MySQL文档存储也为schema-less模式的JSON文档提供了多文档事务支持和完整的ACID合规性。
3、窗口函数(Windos Functions):从8.0开始,新增了一个叫窗口函数的概念,它可以用来实现若干新的查询方式。窗口函数与SUM()、COUNT()这种集合函数类似,但它不会将多行查询结果合并为一行,而是将结果放回多行当中。即窗口函数不需要GROUP BY。
4、隐藏索引:在8.0版本中,索引可以被“隐藏”和“显示”。当对索引进行隐藏时,他不会被查询优化器所使用,我们可以使用这个特性用户性能调试,例如:我们先隐藏一个索引,然后观察其对数据库的影响。如果数据库性能有所下降,说明这个索引是有用的,然后将其“恢复显示”即可,如果数据库性能看不出变化,说明这个索引是多余的,可以考虑删掉。
5、取消查询缓存:8.0出于性能和可维护性方面的考虑取消了查询缓存,通过使用索引,更好的查询计划优化,以及缓存结果集而不是整个查询。这些方法更有效地提高了查询性能,同时避免了查询缓存可能引入的问题。
6、select for update支持no wait:如果另一个事务已经锁定了一些行,当前事务将等待直到那些锁被释放。加上NOWAIT关键字后,如果尝试锁定的行已经被其他事务锁定,数据库将立即抛出一个错误,而不是等待。
7、降序索引:8.0为索引提供按照降序方式进行排序的支持,在这种索引中的值也会按降序的方式尽心排序。
8、通用表达式(Common Table Expressions CTE):在复杂的查询中使用嵌入式表时,使用CTE使得查询语句更清晰。
9、UTF编码:8.0开始,使用utf8mb4作为MySQL的默认字符集。
10、JSON:8.0大幅改进了对JSON的支持,添加了其基于路径查询参数从JSON字段中抽取数据的JSON_EXTRACT()函数,以及用于数据分别组合到JSON数据和对象中的JSON_ARRAYAGG()和JSON_OBJECTAGG()聚合函数。
11、可靠性:InnoDB现在支持表DDL的原子性,也就是InnoDB表上的DDL也可以实现事务完整性,要么失败回滚,要么成功提交,不至于出现DDL时部分成功的问题,此外还支持crash-safe特性,元数据存储在单个事务数据字典中。
12、高可用性(High Availability):InnoDB集群为您的数据库提供集成的原生HA解决方案。
13、安全性:对OpenSSL的改进、新的默认身份验证、SQL角色、密码强度、授权。