如何解决`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 无关;唯一的影响是复制的 UPDATE
和 DELETE
语句将具有 WHERE
条件中的所有列,而不仅仅是主键,这将增加 WAL 量并对性能不利。
REPLICA IDENTITY FULL
主要是无主键的表的拐杖,无论如何都要避免。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。