0

テーブルに継続的に挿入を行っており、最も古い行を自動的に削除して一定のテーブル サイズ (ハード ドライブ上のテーブルのサイズ) を維持したいと考えています。以下を使用してmysqlでこれを行うことができました:

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

これらの値とドライブの空き領域を使用すると、delete ステートメントを発行でき、テーブルのサイズは大きくなりません。

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

DB を特定のサイズに保つという要件については、少し興味があります。データを別の場所にアーカイブしますか? そうでない場合、なぜそれを保持するのですか?サイズベースの保持ポリシーではなく、時間ベースの保持ポリシーにしないのはなぜですか?

于 2012-05-22T22:03:17.013 に答える