PostgreSQL 8.4.13 データベースを使用しています。
最近、テーブルに約 8,650 万件のレコードがありました。それらのほとんどすべてを削除しました - 5000 レコードしか残っていません。走った
reindex
と
vacuum analyze
行を削除した後。しかし、テーブルが大きなディスク領域を占有していることはまだわかります。
jbossql=> SELECT pg_size_pretty(pg_total_relation_size('my_table'));
pg_size_pretty
----------------
7673 MB
また、残りの行のインデックス値はまだかなり高く、100 万の範囲のようです。バキュームと再インデックスの後、残りの行のインデックスは 1 から始まると思いました。
ドキュメントを読みましたが、インデックスの再作成に関する私の理解が歪んでいたことは明らかです。
それにもかかわらず、私の意図は、削除操作後にテーブル サイズを縮小し、インデックス値を下げてSELECT
、テーブルからの読み取り操作 () にそれほど時間がかからないようにすることです。現在、私のレコードから 1 つのレコードを取得するのに約 40 秒かかります。テーブル。
アップデート
ありがとうエルウィン。pgのバージョン番号を修正しました。
vacuum full
私のために働いた。ここでフォローアップの質問が 1 つあります:
大きなテーブルのほとんどを削除した後、既存の行の主キー番号を再起動します