我只是在经历一种情况,我根本没有得到我的问题的线索。
我有一张名为名称的表(带有列名称和时间)。该表每分钟插入大量行。这些插入的记录会在特定的时间间隔内被删除。所以,最后我停止插入数据并从表中删除所有行。
我的数据库版本详细信息
impss=# SELECT version();
version
----------------------------------------------------------------------------------------------
PostgreSQL 8.3.7 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2
(1 row)
但是当我发出查询以查找表的大小时,我仍然得到一些大小。
impss=# SELECT pg_size_pretty( pg_total_relation_size('names')) ;
pg_size_pretty
----------------
1504 kB
(1 row)
第一个问题为什么它仍然显示一些大小,尽管我已经从表中删除了所有记录。
要查找上次 autovacuum 完成的时间,我发出了以下查询:
当前时间是
impss=# select now();
now
----------------------------------
2012-11-08 20:21:10.550434+05:30
(1 row)
impss=# SELECT last_autovacuum from pg_stat_user_tables where relname='names';
last_autovacuum
----------------------------------
2012-11-08 17:51:31.995618+05:30
第二个问题:为什么在这段时间之后还没有执行 autovacuum 过程,尽管我的数据库不是很忙,而且我已经停止了对该表的所有事务。
所以,请告诉我是否需要做任何特定的配置来进行频繁的清理,以便在记录被删除后我可以取回所有空间。