昨晚将我们的数据库从 9.3.5 升级到 9.4.1 后,服务器出现了高 CPU 峰值。升级是使用 pg_dump 完成的。于是把数据库转成SQL再导入9.4。
在 CPU 峰值期间,日志中有很多这样的消息:
process X still waiting for ExclusiveLock on extension of relation Y of database Z
after 1036.234 ms
和:
process X acquired ExclusiveLock on extension of relation Y of database Z
after 2788.050 ms
看起来可疑的是,有时在完全相同的毫秒内有多个“获取”消息用于完全相同的关系号。
为什么 Postgres 会在同一毫秒内将表增长两次?它可能是具有高填充因子的索引吗?
欢迎任何有关如何解决此问题的建议。
PS 我也在Postgres 邮件列表上问过这个问题,如果不妥请告诉我。