首页 > 数据库 >智能优化揭秘——GaussDB数据库查询重写的自动挖掘与生成

智能优化揭秘——GaussDB数据库查询重写的自动挖掘与生成

时间:2024-10-30 12:03:21浏览次数:1  
标签:重写 GaussDB 规则 数据库 改写 SQL WeTune 揭秘


在数据库世界里,查询重写是提升性能的关键环节。WeTune作为一款革命性工具,能自动发现新重写规则,打破现有系统依赖人工发现重写规则的局限,大幅提升数据库查询性能。

上海交通大学软件学院副院长王肇国和高斯实验室GaussDB数据库优化器专家Ethan联手开展了一场以《智能优化揭秘——GaussDB数据库查询重写的自动挖掘与生成》为主题的技术对谈,深入探讨了WeTune 2.0的重写规则与GaussDB的合作落地。直播过程包含对WeTune 2.0的项目背景、WeTune改写规则的自动发掘方式及实现、WeTune 2.0版本优势、在GaussDB中的应用与技术转化、未来前景等内容的解析与分享,一起倾听他们产教融合背后的故事吧。

目录

一、WeTune产品的项目背景

二、WeTune改写规则的自动发掘方式

三、WeTune改写规则的自动挖掘实现

四、WeTune 2.0版本优势

五、WeTune 2.0在华为云GaussDB的落地

六、如何解决引入大量规则之后产生的性能问题?

七、WeTune在数据库产业的价值及未来前景

一、WeTune产品的项目背景
查询改写是数据库SQL优化过程中非常重要的部分,在语义不变的情况下,它可以把一条普通的或者性能不好的SQL语句优化成一条性能更好的SQL语句,实现查询效率的提升。改写规则作为查询改写中最关键的一个组件,想要在数据库里面添加改写规则,往往依赖于数据库专家经验的积累。如今,SQL语句的生成对象不再受限于程序员,外部框架和大模型也能够自动生成,随着生成源的增加,原来的SQL改写规则不再适用。

由上海交通大学软件学院副院长王肇国团队开发出的WeTune刚好能解决这一问题,其核心思想就是自动发掘某些场景下的改写规则。于是,华为云数据库GaussDB团队与王肇国教授团队深度合作,成功完成WeTune 2.0在GaussDB产品上的落地。

二、WeTune改写规则的自动发掘方式
自动挖掘的前提是暴力枚举,枚举之后检验语义是否正确,通过等价性验证去把最后一道关,所以,WeTune的等价性验证能力决定了它能够枚举哪些规则。下面是WeTune的改写规则的自动发掘方式:

方式一,尝试暴力枚举所有在语法上合法的改写规则;

方式二,用形式化验证的方式去验证枚举的规则是否正确(输入、输出的SQL是否在语义上等价);

方式三,借鉴数据库cost estimation技术检验改写规则是否有效,SQL优化性能是否更好。

在实际运用中,以上改写规则的三种自动发掘方式也面临着一些现实层面的挑战。

第一个

暴力枚举虽然空间大,但开销也大,导致很多算力浪费。

不过,上海交通大学软件学院副院长王肇国团队通过开发的一种只枚举小规则的技术,用小规则去推大规则,解决算力浪费的问题。

第二个

等价性验证。改写规则等价性验证,本质上就是SQL等价性验证,把不可判定问题的验证转换成可满足性等价、可判定问题的验证。另外,SQL等价性本身是一个关系型代数,把它转换成线性代数的求解。通过这两个维度解决了现有的SQL等价性验证问题,使得改写规则的枚举能力和范围大大提升。目前WeTune 2.0支持SQL:1999所有语法的验证。

第三个

除了借鉴数据库cost estimation技术来检验SQL优化性能是否更好以外,还会创建数据库实例,将改写规则在数据库实例上运行,以保证SQL优化效果最佳。

有了这三方面的解决方案之后,2022年,上海交通大学软件学院副院长王肇国团队对WeTune 1.0版本进行了一个性能测试。他们从GitHub上通过对起始时间、受欢迎程度等维度进行筛选排序,找了涵盖电商、论坛等不同应用场景的20个开源应用,并在这些应用上运行程序,共收集了大概8500多条SQL语句。结果显示,WeTune 1.0优化的SQL语句大概674条,而其他商业数据库只能优化427条。相较而言,WeTune 1.0 优化效果大幅领先。

三、WeTune改写规则的自动挖掘实现
WeTune 2.0在SQL等价性验证、枚举的能力和范围、规则的表达上都进行了精心设计,对GaussDB使用体验有极大提升。

四、WeTune 2.0版本优势
相比WeTune 1.0版本,WeTune 2.0版本有几个比较大的优势:

第一,增强的WeTune枚举能力,包括枚举的速度和枚举更多的复杂规则;

第二,增强的WeTune验证能力,可以支持更多的SQL特性;

第三,可以让用户可读、可加载、甚至可以直接使用手写。

对比现有基于代码的查询引擎,WeTune 2.0不需要代码、不需要编译、不需要去发布版本,客户自己可以写改写规则,写完之后,通过GaussDB提早准备的接口,直接放到数据库里面就可以即时生效。GaussDB可以为用户提前预留好很多重写规则,后续如发现重写规则不够用,可自行增加,非常方便。

第四,改写规则可在客户端实现部署。WeTune目前主要部署在云端,后面改写规则也可以部署在客户端,进行自动加载,实现不同用户间互不干扰。

五、WeTune 2.0在华为云GaussDB的落地
WeTune和现有数据库应用落地过程中,不同的架构会面临不同挑战。WeTune 2.0在华为云GaussDB的落地,从技术角度来讲,GaussDB数据库是System-R架构,它的重写规则是耦合在代码里面,增加或卸载一个规则需要改写查询引擎。把WeTune应用在System-R架构上面涉及到理论、技术、工程层面的一些问题。不过,上海交通大学和华为的积极交流和深入探讨,也为彼此提供了不同的视角。

在数据库开发过程中,改写规则非常依赖人工经验。随着客户场景越来越多,很多规则已经超出了现有的承载能力。从产品开发流程层面上讲,想要在GaussDB里面添加一个新的重写规则,论证重写规则是否等价是非常困难的。但是有了WeTune以后,开发者只要按照形式化语言去描述重写规则,然后WeTune拿去做验证,证明该规则在约束下是等价的,就可以放心地将该重写规则添加到GaussDB中,节约验证时间,对GaussDB的开发等流程非常有帮助。

WeTune从框架上去解决了这两个重写规则是否等价的问题,这是WeTune非常突出的贡献点。对于客户来说,在使用GaussDB进行SQL优化时,只管放心用,优化交给GaussDB;对于开发者来说,只需要关心SQL语义,性能交给GaussDB。

GaussDB引入WeTune2.0以后,自然会产生非常多的规则,帮助用户优化SQL的同时,也引入了另外一个成本,即会产生了SQL优化代价。

六、如何解决引入大量规则之后产生的性能问题?
从客户角度来讲,很多业务其实是相对比较固定的,而且上线之前也提前会做系统测试。若系统里面SQL优化度很高,那么就不必改写规则和暴力枚举,这样就可以降低优化成本。

在实际环境中,大家希望数据库有成千上万条的改写规则可以给用户去用,可以生成改写的SQL语句。但是,改写规则非常多的时候,会导致改写和规则匹配的时间非常长,导致资源的极大浪费,也会影响用户体验。

那如何在性能上做加速呢?

目前来讲,主要通过两方面来去解决:

一方面是从通用的匹配算法入手。当改写规则非常多的时候,匹配算法能够帮助性能有数量级的提升;

另一方面,从应用的场景或从SQL产生的源头来进行分类。不同应用场景下、不同业务目的、不同的框架需要的改写规则不一样,WeTune 2.0可以对于不同场景和需求来去做定制化的规则探索。

七、WeTune在数据库产业的价值及未来前景
 WeTune是多个技术合起来形成了一个规则挖掘。从学术角度来讲,SQL等价性验证可以往数据库测试这个方向再迈一步。

在数据库测试过程中,对于SQL的优化引擎,可以使用差分测试。差分测试是一种很经典的数据库测试方式,验证重写规则可以使用,验证SQL优化引擎过程中也适用。

WeTune等价性验证器可以去枚举语义等价但形式完全不同的两条SQL,这样可以确保在测试对比过程中,程序运行是不一样的路径,可以更高效或覆盖面更广地完成数据库引擎的测试任务。

WeTune不仅减轻了数据库开发者或者DBA的负担,目前在教育领域里有一定的应用,WeTune等价性验证帮助国内外很多高校助教批改学生的数据库作业,减轻数据库教育工作者的工作压力。

华为与高校的深度合作将持续推进,融合双方的技术优势和科研力量,共同探索数据库领域的前沿技术,培养更多高水平的数据库人才。未来,华为和上海交通大学研究团队将携手,共同突破数据库查询重写技术的瓶颈,通过持续的创新和优化,进一步提升GaussDB的查询性能和效率。我们期待更多的技术合作和探索,推动数据库技术向智能化、自动化方向发展,为广大企业和用户带来更多价值。

欢迎小伙伴们交流~

标签:重写,GaussDB,规则,数据库,改写,SQL,WeTune,揭秘
From: https://www.cnblogs.com/xiaoxu0211/p/18515589

相关文章

  • 利用GaussDB的可观测性能力构建故障模型
    ​D-SMART高斯专版已经开发了几个月了,目前主要技术问题都已经解决,也能够初步看到大概的面貌了。有朋友问我,GaussDB不已经有了TPOPS了,为什么你们还要开发D-SMART高斯专版呢?实际上TPOPS和D-SMART虽然都可以用于Gaussdb的运维监控,不过其分工还是十分明显的。TPOPS是华为GaussDB自带......
  • LLVM技术在GaussDB等数据库中的应用
    万物互联的态势下,数据量的激增使得“如何提升数据处理性能”成为各家数据库共同面临的挑战。作为编译优化技术的代表,基于LLVM的CodeGen技术,能为每个查询生成定制的机器码替代原本的通用函数,减少实际查询时冗余的条件逻辑判断、虚函数调用并提高数据局域性,从而达到提升查询整体性能......
  • GaussDB数据库事务管理
    ​一、引言事务管理是数据库系统中至关重要的一部分,它确保了数据库的一致性和可靠性。在GaussDB数据库中,事务管理不仅遵循传统的ACID特性,还提供了一些高级功能。本文将深入探讨GaussDB数据库事务管理的各个方面。二、事务的基本概念2.1事务的定义事务是数据库操作的基本单元......
  • GaussDB火焰图分析
    问题描述CPU利用率是衡量系统负载和健康度的重要指标之一,系统在运行过程中时常发生CPU利用率高的情况。在分析性能问题时,可通过火焰图查看CPU耗时,了解瓶颈在哪里。问题现象部分sql执行速度不符合预期。告警慢sql告警。cpu使用率高告警。数据库整体运行慢。业务影响业务......
  • GaussDB的行存表与列存表的选择
    一、前言行存表和列存表是数据库中两种常见的数据存储方式。随着信息技术的飞速发展,数据存储和管理以及如何高效地存储和处理大量的数据已经成为了我们的一大挑战。为了解决这个问题,行存表与列存表应运而生,它们以其独特的优势在各个场景得到了高效的应用。GaussDB支持行、列存储......
  • GaussDB WDR报告分析
    问题描述CPU使用率高。问题现象出现CPU使用率超过阈值,CPU使用率快速上涨或短时间持续较高水平等现象。告警CPU使用率告警。业务影响CPU使用率高集群响应变慢。原因分析期间业务压力增大导致。出现CPU耗时较多的SQL。处理方法步骤1查看监控是某个节点的CPU高还是集......
  • GaussDB OLTP 云数据库配套工具DAS
    一、前言传统的数据库管理软件,不仅需要下载安装、功能还比较单一,而且已经滞后于云服务的发展模式。华为GaussDB云数据库提供了配套的生态工具数据管理服务DAS。DAS通过与数据库内核的紧密结合,提供了数据库开发、运维、智能诊断一站式云上数据库管理平台,方便用户使用和运维华为......
  • 数据库自治运维技术领域,GaussDB也有大作为
    在数据库自治运维技术领域,主要分为两条技术路线。其一是以Oracle为主的老牌数据库厂商,构建运维及生命周期管理统一逃课,实现大规模的数据库智能化管理能力;对用户通过运维工具指导业务快速升级和排障,对业务通过内置的优化诊断套件和多维度报表,快速定位性能瓶颈问题和实现SQL的快速优......
  • 如何使用云数据库GaussDB管理平台进行实例安装?
    ​前言随着数字经济的蓬勃发展,数据库也成为企业的关键技术生产力,也是各行各业数字化转型的必要根基。GaussDB作为新一代分布式数据库,核心代码100%自主创新,具备高可用、高安全、高性能、高弹性、高智能、易部署、易迁移的特性,是当前国内唯一能够做到软硬协同、全栈自主的数据库,目......
  • GaussDB数据库中逻辑对象关系简析
    初次接触openGauss或GaussDB数据库的逻辑对象,被其中的表空间、数据库、schema和用户之间的关系,以及授权管理困惑住了,与熟悉的MySQL数据库的逻辑对象又有明显的不同。本文旨在简要梳理下GaussDB数据库逻辑对象之间的关系,以加深理解。1、GaussDB数据库逻辑对象1.1表空间、Databas......