简单的查询偶尔运行非常缓慢

我有一些非常简单的查询,偶尔运行非常缓慢。

表的views_sites约10 – 20行。

运行EXPLAIN ANALYZE总是给运行时间less于3毫秒。

当查询自动运行(每10秒钟)它偶尔会超过一秒钟运行。

查询:

INSERT INTO ga.viewed_sites (site_id) VALUES ('gop2') 

桌子:

 CREATE TABLE viewed_sites ( site_id character varying(4) NOT NULL, last_viewed timestamp with time zone DEFAULT now() NOT NULL ); 

(偶然的)日志结果:

2010-05-24 15:47:55 UTC LOG: duration: 1044.632 ms statement: INSERT INTO ga.viewed_sites (site_id) VALUES ('gop2')

这是一个非常模糊的问题,但是这可能是什么原因造成的呢? 我想它归结为CPU,内存,硬盘或上述的一些组合。

Postgresql 8.3,Ubuntu 8.04

Intel(R)Core(TM)2 Duo CPU E6750 @ 2.66GHz

2个GiB RAM

或者,表格可能被locking。 似乎所有的东西,更可能。 Postgresql对锁非常保守,但可能会发生。 一秒钟等待高清写入,否则CPU似乎不太可能。 而且,插入也不需要太多的内存。 检查表pg_locks (和pg_stat_activity以查看他们在做什么)以及函数pg_lock_status() ,或与locking状态有关的其他一些表和函数。

表中是否有外键? 如果必须检查外键约束,则必须执行表查找。 也许这会减慢速度。

http://wiki.postgresql.org有很多提示。