我有3个数据库表,每个表包含600万行,每年增加300万行。
以下是表格信息: 表1:每个字段中平均50个字符的20个字段。两个索引都在时间戳字段上。 表2:5个字段,2个字节的数组字段和1个xml字段 表3:4个字段,1个字节的数组字段
以下是用法: 在每个表中每秒插入15到20条记录。 通过连接前2个表创建视图,而选择主要基于第一个表中的日期字段。
现在,在所有三个表中分别插入一条记录大约需要100毫秒。
我打算从postgres 8.4迁移到9.2。我也想对插入性能进行一些优化。另外,我打算创建历史表并将旧记录保存到这些表中。我在这方面有以下问题
提前致谢, Sudheer
答案 0 :(得分:1)
我确信有人会比我出现更好的信息并提供更好的答案,但我的印象是:
现在,这就是说,维护小型索引的成本低于大型索引,因此创建历史表和移动旧数据可能只是通过降低索引压力来提高性能。但我希望你的一个索引能够直接产生更大的影响。也许你可以拥有一个包含两个索引的历史表,并只在“今天”表中维护其中一个?
如果我在你的鞋子里,我会在运行8.4的机器上获得一份类似配置的生产副本。然后升级到9.2并查看插入性能是否发生变化。然后尝试这些想法并对它们进行基准测试,看看哪些改进了这种情况。为了产生有用的信息,保持尽可能与生产类似的东西是绝对必要的,但它肯定会比你可能获得的任何假设答案更好的信息。
现在,插入一行IMO 100ms似乎相当慢。更好的硬件肯定会改善这种情况。通常的建议是带有电池备份缓存的大条带RAID阵列。 PostgreSQL 9.0高性能提供了有关所有这些的更多信息。