MySQL 5.x和8.0区别

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角色、密码强度、授权。

详见:MySQL :: What’s New in MySQL 8.0? (Generally Available)

参考:Hollis

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值