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.pswp.cn/bicheng/82825.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82825.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82825.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

破能所,入不二

一、緣起:從“聞所聞盡”到性相不二 《楞嚴經》觀世音菩薩耳根圓通法門的核心教義——“初于聞中,入流亡所;所入既寂,動靜二相,了然不生。如是漸增,聞所聞盡”,揭示了從凡夫二元認知躍升至究竟…

網站每天幾點更新,更新頻率是否影響網站收錄

1. 每天幾點更新網站最合適?總怕時間選錯影響收錄? 剛開始搞網站的時候,是不是老糾結啥時候更新合適?早上剛上班?半夜沒人的時候?選不對時間,總擔心搜索引擎爬蟲來了沒抓到新內容,影…

使用workvisual對庫卡機器人進行程序備份

1,將電腦網卡設置自動獲取,用網線將電腦與庫卡機器人控制柜上的網口連接 2,打開軟件后,會出現項目打開對話框,點擊瀏覽按鈕,會出現機器人站項目 3,點擊項目前面的?,展開菜單&…

2025.5.22 Axure 基礎與線框圖制作學習筆記

一、Axure 基礎 - 界面及相關了解 界面布局 工具欄 :位于軟件上方,包含新建、打開、保存等常用文件操作按鈕,以及撤銷、重做、剪切、復制、粘貼等編輯功能按鈕,方便快速執行相關操作。 元件面板 :在左側,提…

Python訓練打卡Day36

復習日: 回顧神經網絡的相關信息 1. 梯度下降的思想 梯度下降的本質是一種迭代優化算法,用于尋找函數的極小值點(比如損失函數的最小值)其關鍵的要素如下 梯度:函數在某點變化率最大方向學習率:每一步的…

【Android】System分區應用自帶庫與原生庫同名問題分析

System分區應用自帶庫與原生庫同名問題分析 問題背景 某系統應用發生必現崩潰問題。崩潰log如下 0*-** **:**:**.** 66666 66666 E ***** aar error:: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_TTT_TTT_TTT" referenced by &quo…

計算機網絡中的單播、組播與廣播

文章目錄 前言一、單播(Unicast)1.1 定義與工作原理1.2 優點1.3 缺點1.4 典型應用場景 二、廣播(Broadcast)2.1 定義與工作原理2.2 優點2.3 缺點2.4 典型應用場景 三、組播(Multicast)3.1 定義與工作原理3.…

ASP.NET MVC添加新控制器示例

ASP.NET MVC高效構建Web應用- 商品搜索 - 京東 控制器(Controllers)是一個協調視圖和模型直接關系的特殊類。它響應用戶輸入,與模型進行對話,并決定呈現哪個視圖(如果有的話)。在ASP.NET MVC中&#xff0c…

Escrcpy(安卓手機投屏軟件) v1.29.6 中文綠色版

在數字設備日益普及的今天,用戶對于設備的控制和管理需求也在不斷增加。對于Android設備用戶來說,Escrcpy這款強大的工具無疑是一個福音。它不僅提供了直觀的圖形化界面,讓用戶能夠輕松顯示和控制自己的Android設備,還以完全免費開…

Python爬蟲實戰:研究Goose框架相關技術

一、引言 隨著互聯網的迅速發展,網絡上的信息量呈爆炸式增長。從海量的網頁中提取有價值的信息成為一項重要的技術。網絡爬蟲作為一種自動獲取網頁內容的程序,在信息收集、數據挖掘、搜索引擎等領域有著廣泛的應用。本文將詳細介紹如何使用 Python 的 Goose 框架構建一個完整…

【Linux 學習計劃】-- 馮諾依曼體系 | 操作系統的概念與定位,以及其如何管理軟件

目錄 馮諾依曼體系結構 操作系統是干什么的? 理解操作系統中的管理 對OS(操作系統)宏觀、整體的分析 總結 結語 馮諾依曼體系結構 首先我們來看這樣一張圖,這就是大名鼎鼎的馮諾依曼體系 在日常生活中,所有的計…

新消息!阿里云ACP大模型認證有變化!

阿里云ACP認證是阿里云認證中的高級工程師,ACP認證方向有云計算、大數據、人工智能、大模型等多個,大家都知道,阿里云ACP考試題量共100題,其中70道單選題30道多選題,每題一分,滿分100分,80分合格…

MySQL 數據遷移Postgresql(openGuass) 之 pg_chameleon

1 pg_chameleon 介紹 pgchameleon 是一款MySQL 到 PostgreSQL/openGuass 的復制工具。 pg_chameleon 使用場景: 1)分析 2)遷移 3)對多個MySQL 數據庫進行數據聚合 操作系統信息 (myenv) rootu24-pg-60:~# cat /etc/issue Ubuntu …

Spark 中,map和foreach的區別

在 Spark 中,map和foreach是兩種不同用途的轉換操作,主要區別在于: 1. 操作類型與返回值 map:是轉換操作(Transformation),返回一個新的 RDD。foreach:是行動操作(Acti…

More SQL(Focus Subqueries、Join)

目錄 Subqueries Subqueries That Return One Tuple Subqueries and Self Connection The IN Operator The Exists Operator The Operator ANY The Operator ALL Union, Intersection, and Difference(交并差) Bag Semantics Controlling Dupl…

OpenGL Chan視頻學習-4 Vertex Buffers and Drawing a Triangle in OpenGL

一、視頻鏈接 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 二、相關網站 docs.gl 三、代碼整理 c #include <GL/glew.h> #include <GLFW/glfw3.h>#include<iostream>int…

WSL中ubuntu通過Windows帶代理訪問github

WSL中ubuntu通過Windows帶代理訪問github 前言: WSL是Windows下的ubuntu訪問工具&#xff0c;目前無法訪問外網&#xff0c;因此需要配置一下。 步驟一 代理中進行如下設置: 步驟二 ubuntu22.04中修改配置 使用如下命令獲取IP地址&#xff1a; ip route | grep default | aw…

為(FramePack)的視頻生成添加首尾幀功能

文章目錄 &#xff08;一&#xff09;前言&#xff08;二&#xff09;可選的尾幀&#xff08;三&#xff09;測試&#xff08;四&#xff09;例子 &#xff08;一&#xff09;前言 前提是這個&#xff1a;《筆記本6GB本地可跑的圖生視頻項目&#xff08;FramePack&#xff09;…

C語言中:遞歸問題的深入研究

C語言中&#xff1a;遞歸問題的深入研究 函數的遞歸有兩個限制條件&#xff1a; 1.遞歸存在限制條件&#xff0c;當滿?這個限制條件的時候&#xff0c;遞歸便不再繼續。 2.每次遞歸調?之后越來越接近這個限制條件。 例子&#xff1a; #include <stdio.h> int main…

《C++20新特性全解析:模塊、協程與概念(Concepts)》

引言&#xff1a;C20——現代C的里程碑 C20是繼C11之后最具革命性的版本&#xff0c;它通過模塊&#xff08;Modules&#xff09;、協程&#xff08;Coroutines&#xff09;和概念&#xff08;Concepts&#xff09;三大核心特性&#xff0c;徹底改變了C的代碼組織方式、并發模…