PostgreSQL 10.0 preview 性能增强 - (多维分析)更快,更省内存hashed aggregation with grouping sets...

标签

PostgreSQL , 10.0 , hashed aggregation with grouping sets


背景

grouping sets 是多维分析语法,PostgreSQL 从9.5开始支持这种语法,常被用于OLAP系统,数据透视等应用场景。

《PostgreSQL 9.5 new feature - Support GROUPING SETS, CUBE and ROLLUP.》

由于多维分析的一个QUERY涉及多个GROUP,所以如果使用hash agg的话,需要多个HASH table,并行计算. 9.5, 9.6的时候,还不支持一个QUERY使用多个HASH TABLE并行计算。

10.0 扩展了聚合NODE,支持hashAggregate并行开多个hashtable,以及MixedAggregate策略用于sort grouping时哈希表的数据倒腾。

使用时对用户完全透明,同时优化器在使用hash agg, multi hashtable,时,会尽量的减少重复SORT。

总而言之,grouping set多维分析会更快(即使包含排序),更省内存。

Support hashed aggregation with grouping sets.    
    
This extends the Aggregate node with two new features:     
HashAggregate can now run multiple hashtables concurrently,     
and a new strategy MixedAggregate populates hashtables while doing sorted grouping.    
    
The planner will now attempt to save as many sorts as possible when    
planning grouping sets queries, while not exceeding work_mem for the    
estimated combined sizes of all hashtables used.  No SQL-level changes    
are required.  There should be no user-visible impact other than the    
new EXPLAIN output and possible changes to result ordering when ORDER    
BY was not used (which affected a few regression tests).  The    
enable_hashagg option is respected.    
    
Author: Andrew Gierth    
Reviewers: Mark Dilger, Andres Freund    
Discussion: https://postgr.es/m/87vatszyhj.fsf@news-spur.riddles.org.uk    
    

例子

+explain (costs off) select a, b, grouping(a,b), sum(v), count(*), max(v)        
+  from gstest1 group by grouping sets ((a),(b)) order by 3,1,2;        
+                                               QUERY PLAN                                                       
+--------------------------------------------------------------------------------------------------------        
+ Sort        
+   Sort Key: (GROUPING("*VALUES*".column1, "*VALUES*".column2)), "*VALUES*".column1, "*VALUES*".column2        
+   ->  HashAggregate        
+         Hash Key: "*VALUES*".column1        
+         Hash Key: "*VALUES*".column2        
+         ->  Values Scan on "*VALUES*"        
+(6 rows)       

这个patch的讨论,详见邮件组,本文末尾URL。

PostgreSQL社区的作风非常严谨,一个patch可能在邮件组中讨论几个月甚至几年,根据大家的意见反复的修正,patch合并到master已经非常成熟,所以PostgreSQL的稳定性也是远近闻名的。

参考

https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=b5635948ab165b6070e7d05d111f966e07570d81

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: postgresql10.0_x64-haosq.zip是一个文件名,它表示的是一个带有哈斯克编译器的64位PostgreSQL 10.0版本的压缩包。 PostgreSQL是一个功能强大且可扩展的开源关系数据库管理系统。它支持多种操作系统,包括Windows、Linux和Mac OS等。在这个压缩包中,"x64"表示支持64位操作系统,"haosq"可能是压缩包的创建者或者对该版本进行了某种修改。 要安装该版本的PostgreSQL,首先需要解压缩这个压缩包。然后,可以按照官方提供的安装指南进行安装和配置。在安装完成后,可以通过命令行或者可视化界面工具来管理和使用PostgreSQL数据库。 PostgreSQL 10.0版本在性能、安全性和功能方面有很多改进和新增的特性。其中包括改进的并行查询处理、逻辑复制、数据分区、JSONB索引等等。这些功能可以提升数据库的性能和灵活性,使其适合处理复杂的数据工作负载。 总之,postgresql10.0_x64-haosq.zip是一个64位的PostgreSQL 10.0版本的压缩包,你可以使用它来安装和配置这个强大的开源数据库管理系统。 ### 回答2: postgresql10.0_x64-haosq.zip是一个PostgreSQL数据库的安装文件。PostgreSQL是一个开源的关系型数据库管理系统,具有高度稳定性和可靠性,广泛应用于各种规模的应用程序和网站开发中。 这个压缩文件中的x64表示适用于64位操作系统的安装版本。haosq是一个识别码,可能是某个发行版本的标识或个人定制版本的命名。 安装PostgreSQL通常需要以下步骤:首先,解压缩haosq.zip文件到你希望安装的目录。然后,运行安装文件来启动安装向导,按照向导的指示完成安装过程。在安装过程中,你可以选择安装的组件和配置选项,例如选择安装PostgreSQL服务器、客户端和相关工具、选择安装位置等。安装完成后,你需要配置数据库的初始设置,例如设置用户名、密码、监听地址和端口等。 安装完成后,你可以使用PostgreSQL提供的命令行工具或者可视化管理工具来管理数据库。你可以创建数据库、创建表和索引、执行SQL查询、导入导出数据等。PostgreSQL还支持事务和并发控制,提供了各种高级功能和扩展。 总之,postgresql10.0_x64-haosq.zip是一个PostgreSQL数据库的安装文件,通过它可以方便地安装和使用PostgreSQL数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值