"HybridDB · 性能优化 · Count Distinct的几种实现方式” 读后感

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了"HybridDB · 性能优化 · Count Distinct的几种实现方式” 读后感相关的知识,希望对你有一定的参考价值。

原文地址:HybridDB · 性能优化 · Count Distinct的几种实现方式

 

HybridDB是阿里基于GreenPlum开发的一款MPP分析性数据库,而GreenPlum本身基于PostgreSQL。

如此,HybridDB的优化思路和手段难免会受到PostgreSQL影响和限制。

 

文中的语句最终优化得到了几个不同计划,其优化的语句简化后形如

select count(distinct c1) from t group by c2;

 

这条语句在HybridDB下实现:

  1. 每个服务器自行分组、计算count(distinct);
  2. 将上一步结果按照分组列重新分发;
  3. 每个服务器根据收到的数据进行二次分组计算;
  4. 收集汇总到一个服务器得到最终结果。

 

文中优化点集中在分组的实现方式上,

a), 排序+分组;

b), hash分组;

c), orca优化方式,同a#,改进在于第一次排序项不同。

原文中a#, b#, c#的计划概括

a), 

Scan (Columnar Scan + Append) -> Sort(category) -> Group by(category) -> Redistribute -> Sort(category) -> Group by(category) -> Sort -> Gather

b), 

Scan (Columnar Scan + Append) -> Group by(Hash(category,actionId)) -> Redistribute(category) -> Group by(Hash(category, acitonId)) -> Group by(Hash(category)) -> Sort -> Gather

c),
Scan (Dynamic Scan) -> Sort (category, actionId) -> Group by (category) -> Redistribute -> Sort (category) -> Group by(category) -> Sort -> Gather

 

个人认为这篇文章提到的优化和MPP关系不大,单机下也许也能得到类似的不同计划。

也许是受限于数据分布特性、数据量等因素,MPP下数据分发、汇总的MOTION优化并没有体现在这里。

 


以上是关于"HybridDB · 性能优化 · Count Distinct的几种实现方式” 读后感的主要内容,如果未能解决你的问题,请参考以下文章

HybridDB for MySQL 学习

在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?

阿里云数据库产品HybridDB简介——OLAP数据库,支持行列混合存储,为用户提供基于开源 OLTPOLAPBigData 生态的一站式解决方案

怎样通过阿里云服务器 去连接到HybridDB for PostgreSQL?

在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?

JVM 性能调优实战之:一次系统性能瓶颈的寻找过程