当前位置: 首页 > article >正文

MySQL推出全新Hypergraph优化器,正式进军OLAP领域!

在刚刚过去的 MySQL Summit 2025 大会上,Oracle 发布了一个用于 MySQL 的全新 Hypergraph(超图)优化器,能够为复杂的多表查询生成更好的执行计划,从而优化查询性能。

在这里插入图片描述

这个功能目前只在 MySQL HeatWave 云数据库中提供;MySQL 社区版如果想要支持的话,需要在源码编译安装时启用相关配置(-DWITH_DEBUG=1)。

以下是官方给出的一个性能测试结果:

在这里插入图片描述

接下来我们看两个使用示例,首先启用优化器配置:

MySQL > SET SESSION optimizer_switch='hypergraph_optimizer=on';

如果上面的语句没有返回错误,表示成功启用 Hypergraph 优化器。

然后比较以下查询在使用传统优化器和 Hypergraph 优化器时的区别:

MySQL > WITH salary_rank AS (     SELECT e.emp_no, e.first_name, e.last_name, d.dept_no, s.salary,RANK() OVER (PARTITION BY d.dept_no ORDER BY s.salary DESC) AS dept_rank     FROM employees e     JOIN dept_emp d ON e.emp_no = d.emp_no     JOIN salaries s ON e.emp_no = s.emp_no     WHERE s.to_date = '9999-01-01' AND d.to_date = '9999-01-01') SELECT * FROM salary_rank WHERE dept_rank = 1;

该查询使用了 CTE 和窗口函数获取每个部门中薪水最高的员工。

传统优化器返回的结果如下:

+--------+------------+-----------+---------+--------+-----------+
| emp_no | first_name | last_name | dept_no | salary | dept_rank |
+--------+------------+-----------+---------+--------+-----------+
| 466852 | Akemi      | Warwick   | d001    | 145128 |         1 |
| 413137 | Lunjin     | Swick     | d002    | 142395 |         1 |
| 421835 | Yinlin     | Flowers   | d003    | 141953 |         1 |
| 430504 | Youjian    | Cronau    | d004    | 138273 |         1 |
|  13386 | Khosrow    | Sgarro    | d005    | 144434 |         1 |
| 472905 | Shin       | Luck      | d006    | 132103 |         1 |
|  43624 | Tokuyasu   | Pesch     | d007    | 158220 |         1 |
| 425731 | Ramachenga | Soicher   | d008    | 130211 |         1 |
|  18006 | Vidya      | Hanabata  | d009    | 144866 |         1 |
+--------+------------+-----------+---------+--------+-----------+
9 rows in set (2.1155 sec)

Hypergraph 优化器返回的结果如下:

+--------+------------+-----------+---------+--------+-----------+
| emp_no | first_name | last_name | dept_no | salary | dept_rank |
+--------+------------+-----------+---------+--------+-----------+
| 466852 | Akemi      | Warwick   | d001    | 145128 |         1 |
| 413137 | Lunjin     | Swick     | d002    | 142395 |         1 |
| 421835 | Yinlin     | Flowers   | d003    | 141953 |         1 |
| 430504 | Youjian    | Cronau    | d004    | 138273 |         1 |
|  13386 | Khosrow    | Sgarro    | d005    | 144434 |         1 |
| 472905 | Shin       | Luck      | d006    | 132103 |         1 |
|  43624 | Tokuyasu   | Pesch     | d007    | 158220 |         1 |
| 425731 | Ramachenga | Soicher   | d008    | 130211 |         1 |
|  18006 | Vidya      | Hanabata  | d009    | 144866 |         1 |
+--------+------------+-----------+---------+--------+-----------+
9 rows in set (1.6108 sec)

查询结果一致,但是 Hypergraph 优化器速度更快。

接下来比较一下 EXPLAIN 语句针对两种优化器返回的执行计划,注意 Hypergraph 优化器只支持 TREE 或者 JSON 格式。

首先是传统优化器:

在这里插入图片描述

然后是 Hypergraph 优化器:

在这里插入图片描述

虽然 Hypergraph 优化器显示的最终成本更高,但是由于它们采用的计算模型不同,实际上比较不同优化器的成本没有任何意义。

我们能够看到传统优化器采用了 Nested Loop Inner Join 方式连接两个表,Hypergraph 优化器则采用了 Inner Hash Join 方式,后者获得了更好的查询性能。

期待一下 MySQL 全系产品支持 Hypergraph 优化器,正式进军 OLAP 领域!

http://www.lryc.cn/news/2387379.html

相关文章:

  • 飞牛fnNAS手机相册备份及AI搜图
  • 消费类,小家电产品如何做Type-C PD快充快速充电
  • 连接表、视图和存储过程
  • 人工智能赋能教育:重塑学习生态,开启智慧未来
  • 银河麒麟V10×R²AIN SUITE:用AI重构安全,以国产化生态定义智能未来
  • JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面
  • 15.进程间通信(一)
  • AI 数据采集实战指南:基于 Bright Data 快速获取招标讯息
  • cursor使用mcp
  • 小白成长之路-计算机网络(四)
  • 【Agent】MLGym: A New Framework and Benchmark for Advancing AI Research Agents
  • 5.27 打卡
  • Web安全测试-文件上传绕过-DVWA
  • 织梦dedecms arclist最新发布日期显示红色
  • 现代 CSS 高阶技巧:实现平滑内凹圆角的工程化实践
  • 【运维自动化-标准运维】如何实现在不同步骤间传递参数
  • STM32 UART通信实战指南:从原理到项目落地
  • 基于stm32的 永磁同步电机二电平驱动控制系统设计
  • [AI]主流大模型、ChatGPTDeepseek、国内免费大模型API服务推荐(支持LangChain.js集成)
  • 手机IP地址更换的影响与操作指南
  • iOS 响应者链详解
  • Flink Table API 编程入门实践
  • MongoDB 安全机制详解:全方位保障数据安全
  • Teensy LC 一款由 PJRC 公司开发的高性能 32 位微控制器开发板
  • MicroPython 开发ESP32应用教程 之 线程介绍及实例分析
  • 鸿蒙5开发宝藏案例分享---一多断点开发实践
  • 嵌入式学习之系统编程(六)线程
  • 分布式常见概念
  • 数据库的事务(Transaction)
  • 大语言模型 提示词的少样本案例的 演示选择与排序新突破