微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

`ALTER TABLE mytable REPLICA IDENTITY FULL;` 是大容量 postgres 数据库的安全操作吗?

如何解决`ALTER TABLE mytable REPLICA IDENTITY FULL;` 是大容量 postgres 数据库的安全操作吗?

我正在使用 debezium 和 Postgres 数据库。该数据库包含几个带有 TOAST(超大属性存储技术)列的表。要处理未更改的 Postgres TOAST 列值,一种方法是将表的 REPLICA IDENTITY 设置为 FULL。但是,我不确定运行 ALTER TABLE mytable REPLICA IDENTITY FULL 是否会导致数据库停机,或者这将是一个安全的操作。 REPLICA IDENTITY 的当前值为 DEFAULT

解决方法

更改副本标识不会导致停机,但它需要对表进行短暂的 ACCESS EXCLUSIVE 锁定,如果您有长时间运行的涉及该表的事务,这可能会成为问题。

但是,我不明白这个练习的意义。这与 TOAST 无关;唯一的影响是复制的 UPDATEDELETE 语句将具有 WHERE 条件中的所有列,而不仅仅是主键,这将增加 WAL 量并对性能不利。

REPLICA IDENTITY FULL 主要是无主键的表的拐杖,无论如何都要避免。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。