TiCDC 不同表之间同步是有顺序的吗?一定要用事务才能保证吗?

不放一个事务更可以保证,ticdc其实是按修改提交的那个时间点按行同步数据的。
就是加入你执行下面三条语句,
update table1 status = 开始
commit;-------例如这时是2023年7月26日14:51:33
启动spark 大量插入数据 类似 insert xx into table2
commit;--------这时是2023年7月26日14:51:47
update table1 status = 结束
commit;-------这时是2023年7月26日14:52:07
那在cdc里面会产生三批数据,
依次是2023年7月26日14:51:33的table1 status = 开始的500行数据(假设table1有500行数据)→2023年7月26日14:51:47的table2的200行数据(假设插入了200行数据)→2023年7月26日14:52:07的table1 status = 结束的500行数据

反而放到一个事务,
update table1 status = 开始
启动spark 大量插入数据 类似 insert xx into table2
update table1 status = 结束
commit;--------例如这时是2023年7月26日14:57:56
这样会一下产生一批数据,是2023年7月26日14:57:56的table2的200行数据(假设插入了200行数据)和table1 status = 结束的500行数据。
这样的话,反而会出现你说的情况,例如下游table1 status = 结束的500行数据已经执行完了,但是table2的200行数据还没执行完,cdc已经异常了。