Postgres中多次删除后访问速度缓慢

时间:2013-08-05 08:53:26

标签: postgresql

我有一个问题。我有一个数据库,其中一个表被清除并每天再次填充数据。经过这样的许多操作后,访问此表的速度要慢得多。

我使用命令DELETE FROM table_name然后COPY INTO table_name...清除了此表 - 我没有使用VACCUM。现在我删除了table_name并再次创建它 - >表现再次处于高位。

现在我使用DELETE FROM ...代替TRUNCATE table_name,我想知道它是否会更好用。

问题可能是索引(这是在创建表时创建的)?

我正在使用PostgreSQL 8.1.23。

1 个答案:

答案 0 :(得分:3)

8.1是旧的,不受支持,在真空中有很多限制,应尽快升级到现代版本。它不仅仅是就地升级,您必须进行转储和重新加载,并且需要阅读文档 - 升级文档和发行说明的升级说明部分主要版本8.2,8.3,8.4,9.0,9.1和9.2。

使用TRUNCATE代替DELETE确实有帮助。在加载表之前,您还应该DROP索引,之后重新CREATE。请参阅the manual

在一个模糊的现代版本中,您还应该在同一个事务中执行TRUNCATECOPY,因为这允许PostgreSQL执行几个有用的优化。