可以为具有更多死元组的表的实时数据库运行真空完整详细命令吗?

Posted

技术标签:

【中文标题】可以为具有更多死元组的表的实时数据库运行真空完整详细命令吗?【英文标题】:Is it ok to run vacuum full verbose command for live database for the tables which has more dead tuples? 【发布时间】:2018-07-18 09:15:47 【问题描述】:

我们有数千张桌子。但在这些桌子中,大约有 20 到 40 张桌子总是很忙,因为这些桌子太臃肿了。

为了避免这种情况,我们正在运行一个 shell 脚本,该脚本对有超过一万个死元组的表执行完全真空。在运行此程序时,我们将停止所有应用程序处理器并在具有更多死元组的表上运行 Vacuum full。

是否可以为具有更多死元组(大于)的表为实时数据库运行真空完全详细命令? 会不会造成不良影响?

我们使用的是 9.2 postgresql 版本。

请澄清一下。提前致谢。

【问题讨论】:

您是否考虑过调整 autovacuum 以加快运行速度? 【参考方案1】:

“不利”取决于您的意见,但在依赖于访问这些表的实时应用程序上运行时,可以。

运行完全真空将锁定这些表并重新写入它们以将磁盘空间回收到操作系统,真空不会减少表的大小,但会释放已用空间供其使用。

https://www.postgresql.org/docs/9.2/static/sql-vacuum.html

【讨论】:

以上是关于可以为具有更多死元组的表的实时数据库运行真空完整详细命令吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PostgreSQL 8.2(用于 Greenplum)中找到死元组(碎片)?

Redshift 真空排序默认值

如何在 postgresql 中获取正在运行的查询的执行计划?

Postgres维护的正确顺序

PostgreSQL 12.2 公开课及视频及PGCE认证(第7期)(CUUG)(2020年)

PostgreSQL 12.2 公开课及视频及PGCE认证(第7期)(CUUG)(2020年)