gpt4 book ai didi

sql - 查询执行速度 PostgreSQL 8.1 与 PostgreSQL 9.2

转载 作者:行者123 更新时间:2023-11-29 13:32:38 26 4
gpt4 key购买 nike

我的问题很笼统,但我也有一个特殊的例子来解释我的问题。我基于Openjpa开发了一个带有持久层的webapp,并使用两个数据库进行了测试。一个是 Postgres 8.1,另一个是 Postgres 9.2。它们具有相同的内容,相同的数据!当我部署我的 webapp 时一切正常,但是当我使用 PostgreSql 8.1 时,我遇到了一个非常奇怪的问题:SELECT * FROM MEDICINE_CASE 类型的选择查询在 Postgres 9.2 及以上版本上最多需要 10 秒在 Postgres 上比 40-50 秒。这可能会浪费我的 webapp 上的很多好工作。 MEDICINE_CASE表是一个20列5000多条的大表,与其他表有7-8个外键关系。你能帮我找出为什么会发生这个问题以及如何在 Postgres 8.1 上解决它吗?

最佳答案

通常您会对查询执行 EXPLAIN ANALYZE,但对于简单的 SELECT * FROM tablename,它不会透露太多信息。 8.1 中的 EXPLAIN 也没有 BUFFERS 选项。

您说这是一个包含 5000 个条目的巨大表格,但就行数而言,按照今天的标准,它通常被认为是非常小的。然而,40 秒的表格扫描时间很长,表明它有很多内容。

因此,要么该表包含大量内容,例如具有数兆字节文本或 bytea 内容的列,要么由于缺乏维护而变得臃肿。或者两者兼而有之。

如果您可以转储并重新加载您的 8.1 数据库(pg_dump 到 sql 文件/dropdb/createdb/重新加载 sql 文件),您将很容易知道性能差异是否真的取决于版本(可疑)或膨胀和碎片化。

此外,无论如何,您真正应该做的是放弃 8.1 并改用受支持的版本。

关于sql - 查询执行速度 PostgreSQL 8.1 与 PostgreSQL 9.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19980570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com