我在不同的Windows服务器上有两个结构相同的postgres数据库。一个用于开发,一个用于开发。
通过powershell脚本插入记录,该脚本使用秒表对象记录每个INSERT的持续时间。
在项目的早期阶段,开发数据库中的记录将以每0.6毫秒大约1的速率处理,而在实时版本中以每1.4毫秒1的速率进行处理。我将时间差异归结为硬件 - 现场服务器已有几年历史,开发时间更新了。
12个月后,我注意到虽然开发服务器上的INSERT速度保持不变,但在实时服务器上它现在慢了10倍。 (每条记录18ms)。
两个数据库之间的唯一区别是大小。开发数据库在一个月后丢弃所有数据,实时版本会永久保存数据。所有数据按月(两个数据库)进行分区,在每个月的开始为新月数据创建一个新分区,在开发服务器上最后几个月分区将被删除,在实时它将不会。
数据仅在最初的24小时内被操纵(插入,更新或删除)。之后,它仅用于报告。
实时数据库是否很大这一事实意味着它必须很慢? 90%的实时数据库都在基本上只是坐在那里并且什么都不做的表中 - 所以我一直认为它们不会影响性能。
如果是这种情况,那么还有什么可能会影响性能?
以下可能是相关的(或不是?)
我最近才注意到性能的变化,所以我不确定它是否随着数据库的增长而逐渐恶化,或者最近是否会突然出现。
随着数据库的增长,这种性能下降是否正常 - 或者我应该寻找其他原因? (如果是的话)
谢谢
好的 - 解决了。
在构建数据库时,我接受了大多数设置的所有默认值 - 这包括表被抽真空的频率。由于两个月前我还没有完全理解的原因,Postgres只是停止对真实数据库中的一个表进行抽真空。