论文解读|从论文到工程实现:PolarDB Cost Based查询改写

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 论文解读|从论文到工程实现:PolarDB Cost Based查询改写

转载自: https://mp.weixin.qq.com/s/REpDpnWS2qlRpXytWEkIEg




引言

《Cost-Based Query Transformation in Oracle》[1]这篇论文是Oracle 2006年放出来的,很详细介绍Oracle是怎么做基于代价的查询变换,知乎的梁老师有篇深度解读《henry liang:Cost-based query transformation in Oracle》[2]有兴趣的同学可以自行了解。但论文只是介绍了一下思想,到具体的工程实现还是有很大的gap,本文试图补齐这些gap。

先抛出一个问题,论文中介绍了大量的启发式变换规则,和cost-based变换规则,如何组织它们,制定顺序?本人以前有幸在presto里面加过一些变换,里面林林总总快100个启发式规则,前后都是有相互依赖,加错地方就是负优化,现在回想一下都是头皮发麻。


总结


cbqt只是帮你找到最准,最优的变换,框架自身并不会降低SQL时延,但具体的变换规则能。cbqt框架的价值在于当你有很多规则,它通过代价估算评估是不是要应用这条规则。当我们精力有限,可有优先搞定如下ROI高的变换。

各种规则收益


其中SU变换增益最大,平均能提升3.8倍,这指导我们可以多花精力在消除子查询上。MySQL SU变换也是比较少的,只有常见的转derived table,spj子查询转semi join。但PolarDB MySQL版将大大增强这部分,后续会有更多技术内幕披露,敬请期待。

此外,一些变换规则确实需要日积月累,对关系代数有深的理解,这也是数据库资深从业者的福音。可以看看SJC变换规则,那是相当复杂了。Oracle做了很多很复杂SQL的变换,举个GBVM的例子,Oracle支持带groupby的view merge,对比之下MySQL是不支持的,仅支持简单的spj的view merge,离Oracle还有很大的距离。


PolarDB MySQL相关工作介绍


云原生数据库PolarDB已经实现了cbqt,但仍需要更多变换规则配合,这是一个长期改进的项目,目前我们在不断加入更多的变换规则,相信在不久的将来,对于复杂的查询,我们也能成倍的降低时延,给用户一个丝滑体验。另外,产品在并行计算ePQ(多核,多机)方面有非常大的查询性能改进,是关系型云数据库里面的领导者,对于同类竞品AWS Aurora有代差上的领先程度。附上官方渠道发布的性能数据,ePQ版本比原生MySQL单条执行最大提升150倍,以下是云原生数据库 PolarDB MySQL版并行查询的产品功能介绍。

https://help.aliyun.com/document_detail/426501.html

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6天前
|
存储 SQL 关系型数据库
关系型数据库强大的查询功能
【5月更文挑战第9天】关系型数据库强大的查询功能
11 3
|
6天前
|
缓存 关系型数据库 数据库
关系型数据库高效查询和统计
【5月更文挑战第8天】关系型数据库高效查询和统计
22 7
|
4天前
|
Cloud Native 关系型数据库 分布式数据库
祝贺!阿里云PolarDB斩获数据库国际顶会ICDE 2024工业赛道最佳论文
阿里云斩获国际顶会ICDE 2024最佳论文,0.5秒实现数据库跨机实例迁移。
祝贺!阿里云PolarDB斩获数据库国际顶会ICDE 2024工业赛道最佳论文
|
5天前
|
存储 SQL 关系型数据库
关系型数据库结构化数据存储查询方式
【5月更文挑战第10天】关系型数据库结构化数据存储查询方式
21 2
|
6天前
|
存储 Cloud Native 关系型数据库
PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
【5月更文挑战第14天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
45 2
|
6天前
|
SQL 关系型数据库 数据库
SQL 42501: Postgresql查询中的权限不足错误
SQL 42501: Postgresql查询中的权限不足错误
|
6天前
|
关系型数据库 数据库 开发者
关系型数据库查询避免SELECT *
有时候你可能会遇到需要选择表中的所有列的情况,但这应该是例外而不是常态。在大多数情况下,你应该尽量避免使用 `SELECT *`。
17 1
|
6天前
|
关系型数据库 分布式数据库 数据库
VLDB顶会论文解读 | PolarDB MySQL高性能强一致集群核心技术详解
在VLDB2023会议上,阿里云瑶池数据库团队的论文介绍了PolarDB-SCC,这是一个创新的云原生数据库系统,确保了低延迟的全局强一致读取。PolarDB-SCC解决了传统主从架构中只读节点可能返回过期数据的问题,实现了在不影响性能的情况下提供强一致性。通过重新设计的主从信息同步机制、线性Lamport时间戳和细粒度修改跟踪,以及利用RDMA优化的日志传输,PolarDB-SCC已经在PolarDB中成功应用超过一年,成为业界首个无感知全局一致性读的云原生数据库解决方案。
66809 0
|
6天前
|
关系型数据库 分布式数据库 数据库
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
PolarDB分布式版助力《香肠派对》实现百亿好友关系20万QPS的毫秒级查询。
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
|
6天前
|
SQL 存储 Oracle
关系型数据库查询数据的语句
本文介绍了关系型数据库中的基本SQL查询语句,包括选择所有或特定列、带条件查询、排序、分组、过滤分组、表连接、限制记录数及子查询。SQL还支持窗口函数、存储过程等高级功能,是高效管理数据库的关键。建议深入学习SQL及相应数据库系统文档。
14 2