我找到了大量有关如何调整和优化Postgres for OLTP应用程序性能的在线和打印指南,但我还没有找到任何特定于Data Warehousing应用程序的类型。由于工作负载类型存在很多差异,我确信在管理和调优数据库方面必须存在一些差异。
我自己的一些:
我从DDL方面发现我更自由地使用索引,因为我通常只担心每天插入一次并且可以使用索引重建进行批量插入。
我通常会将整数代理键用于通常具有多个自然键以加快连接速度的数据
我通常会定义并维护一个非常全面的日期表,该日期表具有预建日期操作(财务日期,而不是日历日期,会计年度月,一周的开始日期等)并且使用它而不是相反在select语句和where语句中使用函数。这通常有助于在CPU绑定的聚合查询期间。
我希望我能找到有关内存管理和其他数据库设置的一些信息,但我很高兴听到任何特定于基于Postgres的数据仓库的有用最佳实践。
答案 0 :(得分:2)
我的经验(当然,数据仓库的规模相当小):
答案 1 :(得分:1)
从内存管理的角度来看,您最大的区别之一是您通常希望将工作OLTP集保留在内存中,而OLAP环境则不然。此外,您的联合集通常更大。这意味着更高的work_mem设置可能非常有用,并且对于表的非规范化,这意味着可以将work_mem推得比其他情况更高一些。我不确定我对shared_buffers的建议是否会改变(我更喜欢从低位开始增加,在每一步测试性能)但是如果你正在报告任何大小的集合,那么work_mem当然需要增加。