点击蓝字
关注我们
GaussDB(for MySQL)发布了计算下推框架。针对数据密集型查询,将提取列、条件过滤、聚合运算等操作向下推送给GaussDB(for MySQL)的分布式存储层的多个节点并行执行。通过计算下推,提升并行处理能力,减少网络流量和计算节点的压力,提升查询处理执行效率。
1
NDP介绍
NDP(Near Data Processing)
GaussDB(for MySQL)采用计算与存储分离的架构,减少网络流量是主要架构准则,NDP设计将该准则应用到查询操作。没有NDP之前,查询处理需要将原始数据全部传输到计算节点。通过NDP设计,查询中的I/O密集型和CPU密集型的大部分工作被下推到存储节点完成,仅将所需列及筛选后的行或聚合后的结果值回传给计算节点,使网络流量大幅减少。
同时跨存储节点并行处理,计算节点CPU使用率下降,最终带来查询效率性能提升。
NDP框架同GaussDB(for MySQL)并行查询进行融合,并进行了页面批量预取的设计,达成执行全流程并行,进一步提升查询执行效率。
官方架构图如下:
2
PQ(parallel query)
GaussDB(for MySQL)支持了并行执行的查询方式,用以降低分析型查询场景的处理时间,满足企业级应用对查询低时延的要求。并行查询的基本实现原理是将查询任务进行切分并分发到多个CPU核上进行计算,充利用CPU的多核计算资源来缩短查询时间。并行查询的性能提升倍数理论上与CPU的核数正相关,也就是说并行度越高能够使用的CPU核数就越多,性能提升的倍数也就越高。
下图为一个表count(*)的执行过程图:
3
对比测试验证
测试服务器参数配置如下:
服务器类型 | ECS服务器 | GaussDB(for MySQL) |
---|---|---|
CPU | 32个CPU | 16个CPU |
内存 | 64G | 32G |
mysql版本 | 官方社区版8.0.26 | 兼容mysql 8.0 |
innodb_buffer_pool_size | 32G | 32G |
服务器节点 | 一个主节点 | 一个主节点+3个只读节点 |
3.1、开启NDP
GaussDB(for MySQL)查看NDP是否开启:
mysql> show variables like 'ndp_mode';
+---------------+-------+| Variable_name | Val