postgres太慢了

时间:2010-06-16 12:32:04

标签: postgresql

我正在对Postgres数据库进行大量测试......

所以基本上我有2个表,我在其中插入了40.000.000个记录,比如说table1和80.000.000在table2上

之后我删除了所有这些记录。

现在如果我做SELECT * FROM table1需要199000毫秒?

我无法理解发生了什么?

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:7)

如果删除表中的所有行,则会将它们标记为已删除,但不会立即从磁盘中删除。为了删除它们,你需要进行“真空”操作 - 这应该在这么大的删除后一段时间自动启动。即便如此,这只会让页面空白但占用相当多的磁盘空间而不会“真空充满”。

如果您经常需要删除大表中的所有行,请考虑使用“truncate”,它只是简单地删除表数据文件。

答案 1 :(得分:3)

元组在逻辑上被删除,而不是fisically。 您应该在db上执行VACUUM。 More info here

答案 2 :(得分:0)

如果要删除所有记录,请使用truncate not delete。此外,第一次运行它时,关系将不会被缓存(文件缓存或共享缓冲区),因此它将比后续时间慢。