PostgreSQL调优数据仓库的最佳实践
我发现了大量关于如何调整和优化Postgres for OLTP应用程序性能的在线和打印指南,但是我还没有发现任何特定于数据仓库应用程序的排序。 由于工作负载类型之间存在如此多的差异,我相信在数据库的管理和调整方面必须有一些差异。
我自己的一些:
我从DDL方面发现,我使用的索引更加宽松,因为我通常只担心每天插入一次,并且可以使用索引重建进行批量插入。
我通常会使用整数代理键来获取通常具有多个自然键的数据,以便更快地进行联接
我通常会定义和维护一个非常全面的日期表,它具有预先编制的日期操作(会计日期而不是日历日期,会计年度 - 月,每周的开始日期等),并且在选择语句中使用它而非自由地使用它并在哪里发言。 这通常有助于在CPU绑定的聚合查询中。
我希望能够找到关于内存管理和其他数据库设置的一些信息,但是我很乐意听到任何针对基于Postgres的数据仓库的有用的最佳实践。
我的经验(当然涉及数据仓库时的规模相当小):
从内存管理的角度来看,你最大的不同之处在于,你通常可以希望将正在工作的OLTP集保留在内存中,而OLAP环境并不是这种情况。 另外很多时候你的加入的组合更大。 这意味着更高的work_mem设置可能非常有用,并且在表格非规范化的情况下,这意味着可以将work_mem推高一点。 我不确定我对shared_buffers的建议是否会发生变化(我倾向于从低开始增加,并在每个步骤测试性能),但如果您正在报告任意大小的集合,则work_mem肯定需要增加。
链接地址: http://www.djcxy.com/p/11181.html