提交 c792cbcc 编写于 作者: T Tom Lane

Recommend ALTER TABLE ... TYPE as the best way to reclaim space occupied by...

Recommend ALTER TABLE ... TYPE as the best way to reclaim space occupied by deleted columns.  The old method involving UPDATE and VACUUM FULL will be considerably less efficient.
上级 92b0b080
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_table.sgml,v 1.69 2004/05/05 04:48:45 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_table.sgml,v 1.70 2004/05/27 03:30:11 tgl Exp $
PostgreSQL documentation
-->
......@@ -399,17 +399,26 @@ where <replaceable class="PARAMETER">action</replaceable> is one of:
<para>
The <literal>DROP COLUMN</literal> form does not physically remove
the column, but simply makes it invisible to SQL operations. Subsequent
insert and update operations in the table will store a null value for the column.
Thus, dropping a column is quick but it will not immediately reduce the
on-disk size of your table, as the space occupied
insert and update operations in the table will store a null value for the
column. Thus, dropping a column is quick but it will not immediately
reduce the on-disk size of your table, as the space occupied
by the dropped column is not reclaimed. The space will be
reclaimed over time as existing rows are updated.
To reclaim the space at once, do a dummy <command>UPDATE</> of all rows
and then vacuum, as in:
</para>
<para>
The fact that <literal>ALTER TYPE</> requires rewriting the whole table
is sometimes an advantage, because the rewriting process eliminates
any dead space in the table. For example, to reclaim the space occupied
by a dropped column immediately, the fastest way is
<programlisting>
UPDATE table SET col = col;
VACUUM FULL table;
ALTER TABLE table ALTER COLUMN anycol TYPE anytype;
</programlisting>
where <literal>anycol</> is any remaining table column and
<literal>anytype</> is the same type that column already has.
This results in no semantically-visible change in the table,
but the command forces rewriting, which gets rid of no-longer-useful
data.
</para>
<para>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册