在 Postgres 中,ALTER TABLE
可以接受action
多种形式,以逗号分隔。例如:
ALTER TABLE mytable
DROP CONSTRAINT pkey,
ADD CONSTRAINT pkey PRIMARY KEY USING INDEX myindex;
s会action
以某种方式以原子方式执行吗?还是需要将语句包装在事务中以确保所有action
s一致生效?
在 Postgres 中,ALTER TABLE
可以接受action
多种形式,以逗号分隔。例如:
ALTER TABLE mytable
DROP CONSTRAINT pkey,
ADD CONSTRAINT pkey PRIMARY KEY USING INDEX myindex;
s会action
以某种方式以原子方式执行吗?还是需要将语句包装在事务中以确保所有action
s一致生效?
在监视我的数据库上的 autovacuum 活动时,我注意到带有标记的 autovacuum(to prevent wraparound)
似乎比“常规”autovacuum 花费的时间更长。这让我开始尝试了解各种“种类”或 autovacuum 的性能/行为差异。
从文档VACUUM
中,我确定了 autovacuum 可能是一个表的几个不同原因:
表中有需要冻结的旧事务 ( relfrozenxid > min(autovacuum_freeze_max_age, table.autovacuum_freeze_max_age
)。这是“ (to prevent wraparound)
”自动清理。
自上次VACUUM
超过“真空阈值”以来表中废弃的元组数
还有其他我想念的吗?
似乎为手册暴露的“攻击性”旋钮VACUUM
是FREEZE
和DISABLE_PAGE_SKIPPING
。这些不同类型的 autovacuum 是否使用过这些选项,如果使用过,什么时候使用过?
我有几个大表需要几天时间才能自动清理,有时会导致性能不佳,直到清理完成。我看到的大多数建议都提到VACUUM
在下班时间做手册,这样 autovacuumVACUUM
的工作量就会减少,但是如果 autovacuum 需要几天才能完成,有什么办法可以挤进手册VACUUM
(给定 24 小时高峰期)活动周期)?
我假设手册VACUUM
仍然需要几天才能完成?还是我的假设不正确?