我有一些非常简单的查询,偶尔运行非常缓慢。
表的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状态有关的其他一些表和函数。
表中是否有外键? 如果必须检查外键约束,则必须执行表查找。 也许这会减慢速度。