"HybridDB · 性能优化 &#…
2018-06-17 19:54:13来源:未知 阅读 ()
原文地址:HybridDB · 性能优化 · Count Distinct的几种实现方式
HybridDB是阿里基于GreenPlum开发的一款MPP分析性数据库,而GreenPlum本身基于PostgreSQL。
如此,HybridDB的优化思路和手段难免会受到PostgreSQL影响和限制。
文中的语句最终优化得到了几个不同计划,其优化的语句简化后形如
select count(distinct c1) from t group by c2;
这条语句在HybridDB下实现:
- 每个服务器自行分组、计算count(distinct);
- 将上一步结果按照分组列重新分发;
- 每个服务器根据收到的数据进行二次分组计算;
- 收集汇总到一个服务器得到最终结果。
文中优化点集中在分组的实现方式上,
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优化并没有体现在这里。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python连载30-多线程之进程&线程&线程使用 2019-08-13
- Python连载25-函数tell&write&writeline$&a 2019-07-24
- Python连载24-函数list&read&seek 2019-07-24
- python中time.strftime不支持中文,报错UnicodeEncodeError: 2019-07-24
- Django源码安装xadmin报错Apps aren't loaded yet. 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash