我正在使用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
主要是没有主键的表的支柱,无论如何都要避免主键。