0

我有连续插入到我的表中,并希望自动删除最旧的行以保持恒定的表大小(即硬盘驱动器上表的大小)。我能够在mysql中使用:

SELECT DATA_LENGTH,DATA_FREE FROM information_schema.tables WHERE table_name = 'table';

使用这些值和驱动器上的可用空间,我可以发出删除语句,并且表大小不会增长。

我怎样才能在 postgresql 中做到这一点?我只能找到桌子大小:

SELECT pg_total_relation_size('table_name');

有没有办法找到表格中的可用空间,或者有更好的解决方案来保持表格的大小不变?

4

1 回答 1

2

这可能是表格大小的开始

SELECT relname, relpages * 8192 "Size_In_Bytes" 
FROM pg_class c
JOIN information_schema.tables t 
    ON c.relname = t.table_name 
WHERE table_schema = 'public' 
ORDER BY  relpages * 8192 DESC

我对将数据库保持在一定大小的要求有些好奇。您是否将数据存档在其他地方?如果没有,为什么要保留它?为什么不将其设为基于时间的保留策略而不是基于大小的保留策略?

于 2012-05-22T22:03:17.013 回答