我观察到一个奇怪的情况,随着时间的推移,查询(下面解释的查询组合)的性能会下降,这意味着在测试开始时(几分钟)查询的时间是 2 毫秒,然后第二天它变成了 15 毫秒然后是 30 毫秒后的一天。
通过查询,我在这里指的是以下任一者的组合:
我想知道可能是什么原因,或者我应该考虑设置配置文件中的哪些设置以及如何设置?我在设置了数据库但未添加主键的 Ubuntu 机器上观察到了这个问题。另一方面,在我开发的 Win 上没有观察到(它在 7 天内平均每个查询 3ms 持续运行)。
我注意到在新数据库(在 Ubuntu 上)中,任何表上都没有主键,这与我开发的数据库相反。缺少主键是否会对此类查询产生负面影响?
我想我会同时问这个问题,因为我正在将我的整个数据库从我的开发机器移到测试机器上。
开发时我使用 PostgreSQL 8.4(CPU:Intel i7 740QM,RAM:6GB),测试时使用 PostgreSQL 9.1(CPU:Intel i3-2100,RAM:3.8GB)。
更新: autovacuum
相关参数:
#autovacuum = on
#log_autovacuum_min_duration = -1
#autovacuum_max_workers = 3
#autovacuum_naptime = 1min
#autovacuum_vacuum_threshold = 50
#autovacuum_analyze_threshold = 50
#autovacuum_vacuum_scale_factor = 0.2
#autovacuum_analyze_scale_factor = 0.1
#autovacuum_freeze_max_age = 200000000
#autovacuum_vacuum_cost_delay = 20ms …
Run Code Online (Sandbox Code Playgroud)