gpt4 book ai didi

postgresql - 如何在没有磁盘空间的情况下对有很多死行的表进行完全清理?

转载 作者:行者123 更新时间:2023-11-29 13:07:55 24 4
gpt4 key购买 nike

将尝试描述问题:

我们有一个表“stories”,当前统计信息:

total_relation_size:188 GB

仅索引大小:52 GB

n_tup_del: 274299085

n_live_tup:368846049

目前我们的 SSD 上还剩下大约 6 GB 的空间。

现在我们安装了另一台有大约 190 GB 可用空间的 PC,它作为/dump 文件夹可用。

我们如何释放空间?

把这个表做pg_dump,然后truncate,然后恢复?它的安全性如何?

或者我们可以以某种方式允许“vacuum full”使用挂载设备 (/dump) 空间来做什么?我们知道 vacuum full 会锁定访问权限。

提前致谢!

最佳答案

Windows“共享”不是数据库的安全存储。

首先,执行备份。

忽略外键约束,你可以进行如下操作:

  • 创建一个表空间 dump,位置为 /dump

  • 在那里创建一个空副本:

    CREATE TABLE copy (LIKE largetable) TABLESPACE dump;
  • 运行

    INSERT INTO copy SELECT * FROM largetable;
  • 放下大 table 。

  • 将新表移动到默认表空间:

    ALTER TABLE copy SET TABLESPACE pg_default;

    ALTER TABLE copy RENAME TO largetable;
  • 根据需要创建索引和约束。

  • 清理:

    DROP TABLESPACE dump;

关于postgresql - 如何在没有磁盘空间的情况下对有很多死行的表进行完全清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58800936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com