我正在使用Zend框架(PHP)和postgresql作为会话存储后端。有时我会收到大量像这样的日志:
Mar 8 11:07:00 myhost postgres[79149]: [30640132-1] 0 LOG: 00000: duration: 1401.742 ms parse pdo_stmt_00000005: SELECT "sessions".* FROM "php"."sessions" WHERE ((("sessions"."id" = '3d5tmqutaeuivtf8a1udfa5i04')))
Mar 8 11:07:00 myhost postgres[79150]: [30640151-1] 0 LOG: 00000: duration: 1400.083 ms parse pdo_stmt_00000007: SELECT "sessions".* FROM "php"."sessions" WHERE ((("sessions"."id" = 'b2vh1r29vnqg1e3600ther40c3')))
Mar 8 11:07:00 myhost postgres[79152]: [30640135-1] 0 LOG: 00000: duration: 1401.261 ms parse pdo_stmt_00000005: SELECT "sessions".* FROM "php"."sessions" WHERE ((("sessions"."id" = '3d5tmqutaeuivtf8a1udfa5i04')))
Mar 8 11:07:00 myhost postgres[79147]: [30640166-1] 0 LOG: 00000: duration: 1381.648 ms parse pdo_stmt_00000009: SELECT "sessions".* FROM "php"."sessions" WHERE ((("sessions"."id" = '6uj0955g64mmd9i8ra1q5nbtd5')))
php.sessions表在任何时刻都有大约500-1000行。
这似乎很奇怪,因为执行此语句的时间未被记录为慢速,但解析几乎是“无穷无尽”的。
有任何线索吗?是否有人知道任何postgres查询解析器速度问题?
一些技术背景:
我正在使用CentOS 6.0上的PostgreSQL 8.4.9,它是一台具有128 GB RAM的2x10核Intel机器。此时CPU仅使用20%-25%。磁盘读/写非常快。log_min_statement = 500。