开发者社区> 问答> 正文

Canal对事务的处理逻辑是怎样的?大事物要在内存解析完才能订阅吗?

在v1.1.3版本下,对接kafka。把canal.instance.memory.buffer.size改成128(减小内存消耗),然后更新120万行数据,发现kafka没数据。但buffer.size改回16384却可以正常解析。 请问哪位大神知道Canal在处理这种大事务的时候的逻辑是什么,难道要在内存解析完整个事务才会把数据往kafka送?内存不足以存储一个事务的时候怎么办?

原提问者GitHub用户shengmingzhu

展开
收起
数据大拿 2023-05-04 18:19:07 144 0
1 条回答
写回答
取消 提交回答
  • 批量更新120万行数据,在mysql server写入binlog的时候就会拆成多个event了,可以参考这个配置 https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#option_mysqld_binlog-row-event-max-size

    canal对消息的解析不是以事物为粒度的,是以event为粒度的,transaction buffer满了就会flush。

    原回答者GitHub用户zwangbo

    2023-05-05 10:47:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ECS块储存产品全面解析 立即下载
阿里云HBase产品体系架构及特性解析 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载

相关镜像