PolarDB并行查询的前世今生

北京中科医院电话 https://m.yiyuan.99.com.cn/bjzkbdfyy/yyhj/260660/
本文会深入介绍PolarDBMySQL在并行查询这一企业级查询加速特性上做的技术探索、形态演进和相关组件的实现原理,所涉及功能随PolarDBMySQL8.0.版本上线。一背景PolarDB云的兴起为古老而顽固的数据库市场带来了新的发展机遇,据Gartner预测,到0年,所有数据库中将有75%部署或迁移到云平台,云原生数据库的诞生为各个数据库厂商、云服务供应商提供了弯道超车的绝好机遇,看一下AWS在Re:invent00发布的Babelfish,就能嗅到它在数据库市场的野心有多大。AWS在07年发表的关于Aurora的这篇paper[],引领了云原生关系型数据库的发展趋势,而作为国内最早布局云计算的厂商,阿里云也在08年推出了自己的云原生关系数据库PolarDB,和Aurora的理念一致,PolarDB深度融合了云上基础设施,目标是在为客户提供云上特有的扩展性、弹性、高可用性的同时,能够具备更低的响应延迟和更高的并发吞吐,其基本架构如下:底层的分布式共享存储突破了单机存储容量的限制,而且可以随用户的数据量增长自动弹性扩容,计算层则是一写多读的典型拓扑,利用RDMA提供的高速远程访问能力来抵消计算存储分离带来的额外网络开销。挑战从上图可以看到,存储层将允许远大于单机的数据容量(目前是8T),甚至线上会出现一些用户,单表容量达到xxT的级别,这在基于MySQL主从复制的传统部署中是难以想象的。同时大量用户会有对业务数据的实时分析诉求,如统计、报表等,但大家对MySQL的直观印象就是:小事务处理快,并发能力强,分析能力弱,对于这些实时性分析查询,该如何应对呢?方案首先要说的是,随着互联网的发展,数据量的爆炸,一定的数据分析能力、异构数据的处理能力开始成为事务型数据库的标配,MySQL社区在8.0版本中也对自身的查询处理能力做了补强,包括对子查询的transformation、hashjoin、windowfunction支持等,同时PolarDBMySQL优化器团队也做了大量工作来提升对复杂查询的处理能力,如统计信息增强、子查询更多样的transformation、querycache等。并行查询(ParallelQuery)是PolarDBMySQL在推出伊始就配备的查询加速功能,本质上它解决的就是一个最核心的问题:MySQL的查询执行是单线程的,无法充分利用现代多核大内存的硬件资源。通过多线程并行执行来降低包括IO以及CPU计算在内的处理时间,来实现响应时间的大幅下降。毕竟,对于用户来说,一条查询如果可以分钟用0个核完成,总比0分钟用个核完成更有意义。此外所有成熟的商业型数据库也都具备并行查询的能力。二并行查询介绍特性并行查询可以说是PolarDBMySQL在计算层最为重要复杂度也最高的功能组件,随着PolarDB的推出已经线上稳定运行多年,而且一直在持续演进,它具备如下几个特性:完全基于MySQLcodebase,原生的MySQL00%兼容,这里包括语法兼容类型兼容行为兼容0附加成本,随产品发布就携带的功能无需额外存储资源无需额外计算节点0维护成本,使用和普通查询没有任何差别,只是响应变快了随集群部署,开箱即用对业务无侵入单一配置参数(并行度)实时性分析,PolarDB原生的一部分,受惠于REDO物理复制的低延迟统一底层事务型数据提交即可见极致性能,随着PQ的不断完善,对于分析型算子、复杂查询结构的支持能力不断提升全算子并行高效流水线复杂SQL结构支持稳定可靠,作为企业级特性,这个毋庸置疑扩展MySQL测试体系线上多年积累完备诊断体系上面这些听起来像是广告宣传词,但也确实是并行查询的核心竞争力。演进并行查询的功能是持续积累起来的,从最初的PQ.0到PQ.0,目前进入了跨节点并行的研发阶段并且很快会上线发布,这里我们先不介绍跨节点并行能力,只


转载请注明:http://www.aierlanlan.com/rzgz/8270.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了