追溯相当典型的EclipseLink/JPA应用程序中的一些数据库性能问题。在什么情况下SELECT可以通过PRIMARY KEY慢?
我看到频繁的查询需要25-100ms。这些都是简单的查询,只需从主键等于某个值的表中选择所有列即可。他们不应该慢。
我正在查看postgres日志中的查询时间,使用log_min_duration_statement,因此这应该消除任何网络或应用程序开销。
此查询不是缓慢的,但它经常使用。
为什么选择主键的速度会很慢? 这是特定于postgres还是通用数据库问题? 我该如何加快速度?一般来说?对于postgres?从PG日志
样品查询:
2010-07-28 08:19:08 PDT - LOG: duration: 61.405 ms statement: EXECUTE <unnamed> [PREPARE: SELECT coded_ele
ment_key, code_system, code_system_label, description, label, code, concept_key, alternate_code_key FROM coded
_element WHERE (coded_element_key = $1)]
表有大约350万行。
我也对此查询运行EXPLAIN和EXPLAIN ANALYZE,它只进行索引扫描。
数据集有多大?每一行有多大?查询是什么样的? – 2010-07-28 16:38:13
你有数据库集群吗?发布前您是否进行过真空全分析?什么Pg版本? – jmz 2010-07-28 19:08:31
没有集群,也不是真正的选项。我还没有完成真空分析(我会),这是PG 8.1。 – Freiheit 2010-07-28 20:19:58