查看原文
其他

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

章芋文 数据和云 2024-03-03

在刚刚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在更多的场景都能发挥作用。


出处:墨天轮(https://www.modb.pro/db/6589,复制到网页中打开或者点击“阅读原文”)



云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群


请备注:云和恩墨大讲堂

继续滑动看下一个

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

章芋文 数据和云
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存