我有一个简单的更新查询(foo列类型为BOOLEAN(默认为false)):
update tablename set foo = true where id = 234;
哪个“id”被设置为(主)键,如果我运行“explain analyze”,则会得到:
Index Cond: (id = 234)
Total runtime: 0.358 ms
但是,在我的慢查询日志(pgfouine)中,我仍然有很多未解决的问题,其中一些查询需要超过200秒才能完成(?!):
Times executed: 99, Av. duration (s): 70
请问有人能解释一下,这是什么原因呢?(表中有150万行,使用的是PostgreSQL 8.4)
id
是主键(因此最多只有一行被更新),这应该是几乎瞬间完成的。要么您遇到了某些问题(运行vacuum analyze verbose),要么其他查询正在锁定整个表...您不能在postgresql日志中识别那些200s查询吗?您是否在配置中设置了“log_duration”参数? - leonbloy