IIWAB pgsql 执行delete语句后, 磁盘空间什么时候回收 - IIWAB

pgsql 执行delete语句后, 磁盘空间什么时候回收

IIWAB 3天前 ⋅ 12 阅读

在 PostgreSQL 中,执行 DELETE 语句后,磁盘空间并不会立即回收,而是会在后续的一些操作中逐步进行:

  • VACUUM 操作DELETE 操作实际上只是将被删除行标记为“已删除”,但这些行占用的空间仍然保留在表中,以便在需要时进行事务回滚等操作。VACUUM 命令会清理这些已删除但未真正释放的空间,并将其返回给操作系统。可以手动执行 VACUUM 命令,也可以设置自动 VACUUM 参数,让数据库在适当的时候自动执行。
  • 检查点(Checkpoint):检查点是 PostgreSQL 中一个重要的机制,它会将内存中的数据持久化到磁盘,并更新数据库的系统表。在检查点过程中,一些与删除记录相关的信息会被清理和整理,这也有助于释放一些磁盘空间。不过,检查点主要是为了保证数据的一致性和恢复能力,虽然它对空间回收有一定的间接作用,但不是专门用于回收磁盘空间的操作。
  • 表的重写(例如使用 CLUSTER 或 REINDEX):这些操作会重新组织表的数据存储方式,在一定程度上可以更彻底地回收磁盘空间。例如,CLUSTER 命令会根据指定的索引对表进行物理排序,这可能会合并一些空闲空间;REINDEX 则会重建索引,也可能会对相关的表空间产生整理和空间回收的效果。

全部评论: 0

    我有话说: