天天看點

PostgreSQL 10.0 preview 性能增強 - (多元分析)更快,更省記憶體hashed aggregation with grouping sets

postgresql , 10.0 , hashed aggregation with grouping sets

grouping sets 是多元分析文法,postgresql 從9.5開始支援這種文法,常被用于olap系統,資料透視等應用場景。

<a href="https://github.com/digoal/blog/blob/master/201505/20150526_02.md">《postgresql 9.5 new feature - support grouping sets, cube and rollup.》</a>

由于多元分析的一個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多元分析會更快(即使包含排序),更省記憶體。

例子

這個patch的讨論,詳見郵件組,本文末尾url。

postgresql社群的作風非常嚴謹,一個patch可能在郵件組中讨論幾個月甚至幾年,根據大家的意見反複的修正,patch合并到master已經非常成熟,是以postgresql的穩定性也是遠近聞名的。

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

繼續閱讀