复杂SQL查询不运行的解决办法及DRDS只读的解决办法

分类:编程技术 时间:2024-02-20 16:14 浏览:0 评论:0
0
无法运行复杂的 SQL 查询,并且 DRDS 是只读的。针对这一问题,本文详细介绍了相应的分析和解答。希望能够帮助更多想要解决这个问题的朋友找到更简单、更容易的方法。 。

背景
在实际业务生产环境中,业务应用系统使用OLTP数据库存储数据后,后台操作系统中的统计报表分析等场景会出现复杂的SQL查询。需要。

为了满足如此复杂的SQL查询快速响应的需求,DRDS团队进一步引入了自主研发的MPP多机并行计算引擎(Fireworks)以及相应的基于第三方的优化策略。新一代分布式SQL引擎,大大改进了Dadi,增强了DRDS的复杂查询处理能力。

数十个下的分布式多表连接、聚合、排序、子查询操作百万数据秒级返回结果,可大幅提升响应速度。它使用相同的数据(RDS只读)进行处理,无需将数据同步到其他数据源,降低了业务架构的整体链路复杂度,节省了业务运维和预算成本。

主要特点
自主研发的MPP多机并行计算引擎Fireworks

DRDS只读实例配备完整的多机SQL执行机器并行处理能力引擎(Fireworks)。它与 DRDS 主实例上附带的 SQL 执行引擎有显着不同。

DRDS主实例的执行引擎采用单机架构,并采取尽可能将计算下推到底层物理子库的策略。它依靠物理分库的计算能力,实现逻辑SQL的分布式计算。

DRDS只读实例上挂载的Fireworks引擎是一个由多个计算节点组成的集群。它将SQL查询转换为分布式计算任务,突破了物理数据库计算。能力限制大大提高了复杂逻辑SQL的计算速度,对Join、Aggregate和Sort计算有显着的加速效果。

Fireworks将Join、Aggregate、Sort等计算任务通过Shuffle的方式打散分发到计算集群中的多个计算节点上,通过多个计算节点的并行计算实现计算加速。

为多机并行执行模式定制的优化器

原来的DRDS主实例优化器主要针对OLTP场景。核心理念是尽可能将所有计算推向底层物理。库执行。目的是充分利用物理图书馆的计算资源,同时避免大量的数据流,从而获得更快的响应速度。

当面对涉及较大数据级别的复杂问题时,查询场景时,整体性能会受到底层物理库的限制,同时也会给物理库带来较大的压力,影响稳定性。总体而言,其OLAP能力有很多局限性。

引入MPP多机并行计算引擎Fireworks后,DRDS本身在计算能力上得到了很大的提升,优化器的整体优化策略也进行了调整:

尝试将复杂的计算(如Join、Aggregation、Sort)上传到自己的执行引擎计算,通过Fireworks计算集群实现计算加速和可扩展性;

继续轻量级计算(如Project , Filter)下推到物理库,减少数据拉取的成本。

DRDS 发行版buted SQL优化器可以通过对执行计划的最细粒度的优化,生成对多机并行执行引擎友好的执行计划,以达到更好的执行效率。

同时提供精细化的算子下推策略,将RDS压力较小的算子下推到物理库,实现更高的计算性价比,同时保护RDS免受高成本算子的影响。 ,从而保证了在线流量的稳定性。

基于线上数据的直接分析

以新零售业务为代表的新兴互联网业务不断涌现。这类业务除了实时OLTP需求外,还伴随着一些复杂的准实时OLAP需求,用于支持实时决策等需求。

目前大多数数据分析场景的解决方案都需要将OLTP数据库的生产数据导出到其他数据源进行离线处理再次进行分析。这种传统的解决方案很难满足准实时的需求,同时,将数据导出到离线系统时还存在数据丢失的风险。

DRDS只读实例不需要执行冗长繁琐的数据同步任务。直接基于RDS只读实例或RDS主实例进行复杂数据处理,降低业务架构整体链路复杂度,节省业务运营和预算。成本。

DRDS只读实例可以在避免数据同步的同时保证数据处理的及时性,并且可以达到READ COMMITED的实时性能(基于RDS主实例)。

清晰的SQL兼容性

DRDS只读实例与DRDS主实例的SQL查询语法完全兼容,并且与SQL兼容性和SQL支持边界高度一致DRDS 5.3 版本。

与同类产品比较s,具有兼容性高、支持边界清晰的特点。提供与 DRDS 主实例几乎相同的体验。

在DRDS主实例上无法执行或执行缓慢的复杂SQL可以直接迁移到只读实例上执行,消除了SQL重写的额外开销。

产品体验灵活自主

DRDS只读实例自动同步DRDS主实例的账户权限信息,原生VPC支持,内外网均可打通同时,还可以根据业务情况灵活改变配置。处理能力线性增加。

技术架构概述

DRDS只读实例整体架构与DRDS主实例基本相同,只是查询层做了一些改动,增加了MPP执行引擎和相应的优化器,如如图所示:

DRDS协议层负责处理网络交互和MySQL协议解析。接收到查询请求后,SQL将被传送到查询层进行处理。查询层负责解析SQL并由执行器生成优化的执行计划,然后交给执行引擎到存储层进行查询和计算。
如果需要使用Fireworks引擎进行计算,查询层在获得执行计划后,会进一步将执行计划转换为分布式执行计划,并作为分布式任务提交给Fireworks Cluster。远程Fireworks集群完成向存储层的数据查询和后续计算的工作。

简单来说,DRDS只读实例可以认为是在原有DRDS的基础上增加了一条具有多机并行处理能力的执行链路。

适用场景

I一般来说,DRDS只读实例适合处理大数据规模、低并发、高延迟的复杂查询。例如,数据分析和报告场景通常具有大量的关联、聚合和排序操作以及涉及计算的数据规模大的特点。

目前,DRDS只读实例已在阿里巴巴集团内多个业务落地,其中最具代表性的是盒马、商业大脑等新零售场景。围绕人、货、场、仓等多个维度进行关联分析,将分散在不同逻辑库的几张甚至十几张逻辑表关联起来,然后进行聚合、排序,满足库存对账、决策支持等业务需求。 。

DRDS只读实例的出现,让业务开发同学无需配置和维护大量的实例数据同步链路,无需担心因数据不同步导致时效性差或结果不准确。在一定程度上减轻了开发学生的工作量。

对于已经使用DRDS的用户,DRDS只读实例可以解决以下两类已知问题:

在使用DRDS的过程中,您可能会发现一些涉及以下问题: Join、聚合、排序等复杂的SQL无法完全下推,需要在DRDS执行引擎中进行二次计算。由于单机执行引擎的内存限制,该计算无法执行。

SQL复杂计算部分可以下推,但涉及的数据规模较大,会增加物理数据库的压力,影响OLTP业务或者响应时间太慢,无法满足要求。

总结

长期以来,DRDS受到单一执行引擎的限制。e机架构已经无法对基于大数据规模的复杂查询提供良好的支持,也无法通过扩展物理资源来实现。自身本地计算能力线性扩展。

DRDS只读实例的推出,完全弥补了DRDS在OLAP场景下的不足,让DRDS在提供强大的OLTP能力的同时,也提供可扩展的OLAP能力,既满足OLTP需求,又满足中等规模需要。为有数据分析需求的用户提供一站式整体解决方案,为用户带来便利。

未来六个月,DRDS只读实例将发布跨逻辑库相关查询功能,并使用更多技术手段不断增强只读实例的核心能力,提高并发、响应时间和数据量。 、交互查询等方面都会有更好的表现,满足企业级应用的严格要求。用于数据库。

目前DRDS只读实例与DRDS主实例共享20%限时折扣,活动详情https://promotion.aliyun.com/ntms/act/drdsreadonlydisc.html
欢迎继续关注DRDS(阿里云分布式关系数据库服务),产品详情
https://www.aliyun.com/product/drds

关于复杂无法运行的SQL查询以及DRDS只读解决方案的答案在这里分享。希望以上内容能够对大家有所帮助。如果您还有很多疑问没有得到解答,您可以关注行业资讯频道,了解更多相关知识。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 复杂SQL查询不运行的解决办法及DRDS只读的解决办法

用户评论