3

int〜15M行のテーブルに、タイプ列を持つテーブルがあります。
OS Windows 7 および C ディスク (postgres がインストールされている場所) は、次のことを示しています。

238 GB の空き容量 59 GB

次に、この列のタイプをbigint次のように変更しました。

ALTER TABLE mytable ALTER column col TYPE bigint;

そして今、Cディスク:

238 GB の空き容量 61 GB

2 GB はどのように解放されますか? bigintそれはより少ないスペースを取るように見えintますか?または何が起こったのですか?

現時点では、このマシン (これはローカル/ホーム コンピューター) に他のプロセスはありません。

4

2 に答える 2

0

わかりやすくVACUUM FULLするために、テーブルが使用するディスク容量のみを削減できます。そして、これは常に正しいとは限りません - 一部のページを削除できる場合は、データファイルページで削除されたタプルの量に依存します。そして、新しいデータファイルを作成します。

PlainVACUUMは、削除されたタプルを削除することによって既存のデータファイル ページのスペースを解放するだけで、データファイルに割り当てられたページの数を減らしません。そして、新しいデータファイルを作成しません。

于 2016-12-08T18:10:48.530 に答える