开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

polardb16.0的逻辑订阅是不是有BUG ? 出现id主键冲突报错

polardb16.0的逻辑订阅是不是有BUG ? 出现id主键冲突报错

展开
收起
三分钟热度的鱼 2024-01-17 17:21:56 47 0
1 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    确实存在一种情况,当使用逻辑订阅时可能会出现主键冲突的问题。这主要发生在通过Hint下推导致物理分片分配ID后,Sequence无法感知到而分配了冲突的ID。在这种情况下,PostgreSQL不会像MySQL一样在每次插入数据时重新确认自增主键的取值,而是会使用缓存来提高效率。这就可能导致某些情况下插入数据(例如SQL语句中指定了ID)不会更新这个自增主键下一个取值的缓存,进而在下次插入时触发错误。

    处理这种问题的主要有两种方法:一种是手动修改订阅库上的数据,使发布端传过来的SQL可以在订阅端上执行;另一种是通过调用pg_replication_origin_advance()函数来跳过当前的事务。这两种方法都可以有效地解决主键冲突的问题。

    2024-01-18 14:16:14
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载