随着互联网的高速发展,企业的数字化改革与精细化运营,均对数据库能力提出了越来越高的要求,数据分析能力、异构数据处理能力等愈发重要。公司各类报表整合,年终数据盘点,分析预测等越来越多的业务开始需要进行复杂查询。
并且,爆炸性的数据量增长也使得传统的数据库能力难以应对。企业的很多业务将对数据的实时性和效率性要求越来越高,想一想你的企业是否也是这样:
- 想!更早更快的在数据中识别和阻断漏洞,保证业务平稳运行;
- 想!更快更准的定位数据,提升服务效率;
- 想!更多更丰富的指标和计算口径,实现业务的快速增长;
但,多数的传统数据库只能支持单线程查询处理模式,无法应对大表查询、复杂查询等场景,且存在资源浪费的情况。因此,简化复杂分析的使用并且提升分析性能,调动多核服务于大查询,并行计算无疑是查询加速和降本增效的重要措施。以下将为您介绍腾讯云原生数据库TDSQL-C在并行计算上的探索与成效。
传统方案的痛点
在 MySQL 生态里,各开源发行版的查询处理只支持传统的单线程模式,即单条 SQL 处理涉及到的解析、优化和执行等阶段,都是在一个线程(称为用户线程)中完成的。这种模式可以有效地支持 TP 负载。虽然长期以来 MySQL 主要用于支持 TP 负载,但业务上还是会有一些 AP 查询,例如金融行业的风控监管、服务行业的查询办理、泛互的数据体系等业务。这些查询虽然不多,但通常要处理比较大的数据量。随着互联网业务的飞速发展,AP 查询将会变得越来越重要。
TP & AP 负载特点
Transactional Processing(TP) 负载的特点:查询并发高,读写混合,SQL 比较简单,单条 SQL 处理行数通常很小。
Analytical Processing(AP) 负载的特点:并发比较低,基本上是读查询或者数据导入,SQL 结构比较复杂,数据处理量比较大。
单线程处理的弊端因此显现出来:数据库无法通过多线程并行执行来降低复杂查询的处理时间,来实现响应时间的大幅下降。这种模式导致即使当下有空闲资源,也无法调动,当用户遇到大数据量查询与分析时,只能容忍超长的查询耗时,无法充分调用资源,快速得到结果。所以,提高查询并发数量(查询间并行),就可以有效提高系统的吞吐量,而对于查询耗时本身,主要是通过线程切换和缓存复用等手段进行优化。
问题来了,如何简化复杂分析的使用,并且提升分析性能呢?
并行查询
基于同一份数据,调动多核服务于大查询(查询内并行),无疑是查询加速和降本增效的重要措施。这就是并行查询 ( Parallel Query, PQ ) ,构建 HTAP 产品形态的技术手段之一 。在并行查询中,用户线程会进行数据划分和任务分拆,同时充当协调者角色,协调多个工作线程并行地执行子任务,从而有效地利用空闲硬件来加速 AP 查询。事实上,各大商业数据库早已支持这种模式,各大云厂商近年也纷纷提供了各自的并行查询能力。
为应对这类痛点场景,满足用户多样查询性能需求,腾讯云原生数据库TDSQL-C MySQL近日发布并行查询能力,通过简单的设置,就可以自动识别大查询,调动多核并行计算,从而大幅缩短查询响应时间。经验证,开启并行查询能力后,在面对大数据量表单与复杂SQL语句时,查询时间大幅缩短,加速比最高可达十几倍。
TDSQL-C MySQL版实现并行查询时,除了对常用的SQL语句进行了支持外,在函数运算的实现上,采用了兼容性更好的办法,使得在实际生产环境中,使用的限制更少,并使得并行查询能力与其他HTAP能力的兼容性更好,将由此形成「TDSQL-C MySQL HTAP」能力矩阵。
并行查询实现效果
测试表明,现已支持的语句,TDSQL-C MySQL版开启并行查询后相较于MySQL传统的串行查询,查询时间平均缩短十倍以上,性能测试采用标准TPC-H测试基准进行,SF=100,使用的实例规格为16核64GB,并发度为16,测试结果如下:
由于TPC-H基准模型涉及22条复杂的select查询流语句,涵盖了大多数SQL语句从测试结果可以看出,常用的语句:例如SUM/AVG/COUNT 等聚合函数、order by/group by 分组/排序语句,未开启并行查询执行时间为1376.96秒,开启并行查询执行时间为107.25秒,加速倍数可以达到 12.84 倍。Join/Between/In 等语句,未开启并行时查询时间为20.55秒,开启并行查询后加速时间为1.87秒,加速倍数可以达到 11 倍。并且随着下一阶段的迭代,加速倍数将会进一步增大。
TDSQL-C MySQL版作为腾讯云自研的新一代云原生关系型数据库,融合了传统数据库、云计算与新硬件技术的优势,为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。并将持续在并行查询能力上发力,在这一企业级查询加速特性上探索更多可能性,为用户的业务带来更强有力的支持。
腾讯云TDSQL-C “并行查询”已正式开放免费体验,欢迎您来测试~
﹀
﹀
﹀
-- 更多精彩 --
↓↓点击阅读原文,查看TDSQL-C的并行计算能力