我们使用 Postgres 数据库 (9.3) 作为我们的生产数据库。它正在生成巨大的 lo 对象。因此,规模增长非常快。所以我们需要经常做数据库清理。为了移除这些 lo 对象,我们需要很长的停机时间。
为了清理数据库,我们按顺序执行以下步骤:
Vacuumlo 数据库名称
Vacuumdb 数据库名称 -t pg_largeobject
Vacuumdb 数据库名称 -t pg_largeobject_metadata
reindexdb -t pg_largeobject 数据库名称
reindexdb -t pg_largeobject_metadata 数据库名称
我们可以在没有任何停机时间的情况下在线(在夜间)进行上述操作吗?
“reindexdb” 采用最严格的锁定,并且是唯一可能导致停机的东西。
除非您有证据表明有必要,否则请停止执行“reindexdb”。为了让你摆脱困境,可能有必要这样做一次,但每次你做“vacuumlo”时都不应该这样做。