TiCDC生成的事件消息会做合并吗

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】v4.0.9

【问题描述】我们有这样一个场景:
上游oracle通过ogg导入到tidb,tidb的数据通过ticdc抽取到kafka;

oracle的表上每行数据操作特点是:insert 1笔,后面会接上4次update,都在独立的事务内完成;目前从kafka这一侧来看,kafka只能收到1条消息。

因为在生产环境下,我不太好在上游oracle上操作,我个人在测试环境测试,直接对tidb上做insert+update操作,是会有多笔消息抽取的,我怀疑是ogg的问题,但是我想如何证明是ogg的问题(因为是别的团队管理ogg,他们否认有做合并),所以看看专家有什么办法指导下有什么办法。


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

  1. kafka 只能收到 1笔消息是什么? 上游是 1 insert + 4 update
  2. 你在 tidb 测试后结果是什么? 1 insert + 4 update, 下游 kafka 如何?
  3. 可以考虑 tidb-server 开启 general log 看看从上游接收到的具体如何。

1,2一起回答吧,下游kafka会是就吐出一条update后的完整记录;
不过看到general log,有发现:
多条sql的txnStartTS和txnUpdateTS的值是一样的,是不是意味着这些sql都在一个事务内完成的?
如果是,那说明我们本身没有问题,我就可以去怼上游路,:joy:

根据你说的,insert 1笔,后面会接上4次update. 那你要找到同一行记录的这5个日志,再判断了。
多条sql的txnStartTS和txnUpdateTS的值是一样的 —> 这里说的是不同的行记录吧
可以和上游再确认下。

都是针对同一条记录,先insert,然后update4次

那感觉是同一个事务吧.

谢谢。
问题原因是ogg做了“优化”,会对上游Oracle多个发生时间相近的独立事务进行合并。:sweat:

:sweat_smile: 额,这个“优化”功能,是 ogg 某个版本之后新的功能吗?