操作mysql数据库源码-GaussDB(for MySQL)并行查询能有多快?

一般来说,数据库有两个非常广泛的应用场景,即“事务处理”和“查询分析”。 作为国内最常用的关系数据库之一,开源MySQL早在5.1版本就开始支持事务处理场景。 随着技术的演进,开源MySQL不仅在版本更新迭代过程中不断增强事务处理能力,而且最新的MySQL 8.0版本已经开始支持很多查询分析特性,比如Window function、CTE、Hash Join、Column直方图和并行度。 COUNT计算等等。

华为云GaussDB(for MySQL)是华为最新一代高性能企业级分布式关系数据库,植根于MySQL开源社区。 它不仅继承了开源的所有查询分析功能,还针对企业级应用查询负载开发了许多增强功能,例如并行查询、查询计算下推(NDP:Near Data Processing)等。

传统的数据解决方案中,“事务处理”和“查询分析”是在不同类型的库上完成的。 这是因为事务处理侧重于数据的增删改查和小数据查询,更注重实时响应。 ,高吞吐量和事务性要求。 “查询分析”侧重于大量数据的复杂计算,更关注数据容量可扩展性、复杂计算能力等。

下图为传统数据解决方案:OLTP数据库满足在线事务处理需求,OLAP数据仓库满足分析查询需求。

客户需要什么样的数据库?

当前业界对数据库的普遍要求是:实时响应、高吞吐量、事务性要求、良好的扩展性、支持复杂查询。 这对于用户来说有很多好处:一是降低了部署成本,用户只需要部署一个数据库集群即可; 其次,解决了数据迁移延迟的问题,更新和查询运行在同一个集群中; 并且支持事务性查询,满足一致性、原则性、隔离性、持久性的要求,查询结果会更加准确。

针对用户需求,华为云原生数据库GaussDB(for MySQL)通过技术创新,具备了同时满足事务处理和查询分析的能力。 GaussDB(for MySQL)是一款OLTP事务型关系数据库,100%兼容MySQL语法。 该架构采用计算与存储分离的设计。 计算资源和存储资源可以独立在线扩展。 存储层采用华为自研的分布式存储系统DFV(Data Function Virtualization),最大可扩展至128TB容量。 单个计算节点最大规格可支持64核CPU,内存容量为512G,最多可支持1个写入节点和15个只读节点。

除了强大的资源扩展能力外,GaussDB(for MySQL)还针对事务处理和查询分析进行了优化,大大增强了事务读写和查询分析能力。 本文将重点介绍增强的查询分析功能之一:并行查询。

提高查询分析的方法:释放CPU多核计算资源

众所周知,软件计算能力的提升一方面得益于CPU硬件能力的增强,同时也得益于软件设计充分利用CPU计算资源的能力。 目前的处理器普遍采用多核设计。 例如GaussDB(MySQL)单节点最多支持64核CPU。 单线程查询方式最多只能占用一核CPU资源,性能提升有限,远远不能满足企业大批量查询场景降低延迟的要求。 因此,复杂的查询分析计算过程必须考虑充分利用CPU的多核计算资源。 只有让多个核心参与并行计算任务,才能大大提高查询计算的处理效率。

● 下图是利用CPU 多核资源并行计算表的count(*)过程的示例:表数据被切分,然后分布到多个核并行计算。 每个核计算部分数据以获得中间count(*)结果。 ,并在最后阶段将所有中间结果汇总以获得最终结果。

数据库操作源代码自动生成系统_mysql源码分析工具_操作mysql数据库源码

提高GaussDB(for MySQL)查询分析的技巧:并行查询

GaussDB(for MySQL)支持查询的并行执行,用于减少分析查询场景的处理时间,满足企业级应用对低查询延迟的要求。 前面提到,并行查询的基本实现原理是将查询任务进行划分,分配给多个CPU核心进行计算,充分利用CPU的多核计算资源,缩短查询时间。 并行查询的性能提升倍数理论上与CPU核心数正相关。 也就是说,并行度越高,可以使用的CPU核心就越多,性能提升倍数就越高。

● 下图为:在64U GaussDB实例(for MySQL)上查询100G数据量的COUNT(*)查询时间。 不同的查询并发度对应不同的耗时。 并发度越高,相应的查询就越耗时。 越短。

GaussDB(for MySQL)支持多种类型的并行查询算子,满足客户各种复杂的查询场景。 当前最新版本(2021-9)已经支持并行查询场景包括:

● 下图是GaussDB(for MySQL)并行查询对TPC-H 22个查询场景的性能测试结果。 测试数据量为100G,并发线程数据为32,下图展示了并行查询相对于传统MySQL单线程查询的性能提升:32并行执行下,单表复杂查询的性能可以得到提升最多可达26倍操作mysql数据库源码,一般可达20倍以上。 多表JOIN复杂查询性能最高可提升近27倍,性能普遍提升10+倍,子查询性能也大幅提升。

数据库操作源代码自动生成系统_操作mysql数据库源码_mysql源码分析工具

总而言之,GaussDB(for MySQL)并行查询充分利用了CPU的多核计算资源,大大减少了分析查询场景的处理时间,大大提高了数据库性能,可以很好地满足客户的低成本需求。各种复杂的查询场景。 延迟要求。 目前GaussDB(for MySQL)的并行查询功能已上线操作mysql数据库源码,更多并行查询场景正在解锁。 欢迎来到华为云官网体验!

本文作者

饶龙辉,华为云数据库内核专家。 十余年数据库内核研发经验,精通MySQL内核原理及源码。 负责华为云数据库GaussDB(for MySQL)高性能SQL查询引擎的功能规划、设计和开发。