Oracle放大招:MySQL 即将支持 Hash Join

网友投稿 1008 2022-10-29

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Oracle放大招:MySQL 即将支持 Hash Join

在刚刚OOW19会上的《python and mysql 8.0 document store》topic中,终于看到了MySQL即将在8.0.18中支持hash join,自从被Oracle收购后,又一特性被引入到MySQL中,有了Hash Join,SQL的性能将得到显著的提升,同学们期盼已久,迫不及待的等待测试,BTW:Oracle数据库在1996年7.3版本中就已经推出了hash join功能。

Topic中给出了MySQL Hash Join的特性介绍:

1、对于大数据量的表关联,HJ速度将明显比NL快很多

2、在内存中处理

3、必要情况下,会使用磁盘空间

4、用于内连接,可扩展到外连接、半连接和反连接

5、替换查询计划中的Block Nested Loop

6、可以通过HINT强制SQL走HJ或者NL

MySQL是一个轻量级的数据库,使用起来非常简单,深受开发者喜爱。之所以一直不支持hash join,想必应该是背后的逻辑和数据支撑需要较高开发和维护成本,hash join算法其实并不复杂,但是要想hash join运行好,类似Oracle CBO一整套的东西是必不可少的,而CBO又依赖于统计信息,随之而来的就是Oracle中常见的谓词越界、数据分布不均、绑定变量窥探等等问题需要解决。

我们从后面看到,MySQL 8.0.18还支持EXPLAIN ANALYZE,也是基于CBO的一些新功能

使用它可以估算成本、查看实际执行的统计数据,包括第一条记录的返回时间,全部记录返回时间,返回记录的数量以及循环数量,EXPLAIN还将可以使用新的输出格式,树状输出。

随着企业数据量的增长,不再是几年前几十M大小随便跑的数据库了,期待MySQL在更多的场景都能发挥作用。最后我们来看下《Oracle中几种表连接方式的使用场景》。

上一篇:磁盘阵列产品
下一篇:RAID 4使用一块磁盘作为奇偶校验盘
相关文章

 发表评论

暂时没有评论,来抢沙发吧~