Redrock Postgres 文档
主页 切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页
编辑页面

更新表数据后会占用更多的存储空间吗?

问题解答

Redrock Postgres 引入了撤消日志,修改元组时会标记删除索引记录,实现了就地更新。另外,在执行删除或非就地更新的事务提交后,会立即重用空间。因而在更新表数据后,并不会占用更多的存储空间。

问题验证

下面我们通过创建一个表,插入一些数据,并对表数据进行更新操作,查看表占用的存储空间在更新前后是否会发生变化。

CREATE TABLE t_large (id integer, name text);

INSERT INTO t_large (id, name)
  SELECT i, 'xxx' FROM generate_series(1, 1000000) AS s(i);

SELECT pg_size_pretty(pg_table_size('t_large'));
 pg_size_pretty
----------------
 19 MB

UPDATE t_large SET id = id - 1, name = 'yyy';

SELECT pg_size_pretty(pg_table_size('t_large'));
 pg_size_pretty
----------------
 19 MB

从上面的测试结果来看,在我们对表t_large进行全表更新完后,该表占用的存储空间没有发生变化。