看源码过程中发现回环控制给语句打标记时retl_mark表的id键值用的threadId,这个值是一个[0,300]的值,如果一个库有多个上游库往它同步,会不会出现多个上游用到同一个threadId的情况,这样的话针对retl_mark表应该会出现同一记录锁争用的情况吧?
原提问者GitHub用户xmpace
在 OTTER 中,每个线程都有一个唯一的 threadId,这个 threadId 会被用来标记 retl_mark 表中的每个记录,以表示该记录是由哪个线程处理的。这样做的目的是为了避免多线程同时写入同一个记录,从而避免记录冲突的问题。
在 OTTER 中,每个线程都有一个独立的 retl_mark 表,因此不同线程之间的记录不会发生冲突。如果一个库有多个上游库往它同步,那么每个上游库都会有一个独立的线程号(threadId),不会出现多个上游用到同一个 threadId 的情况。
总之,OTTER 通过线程号(threadId)来避免记录冲突的问题,保证了数据同步的正确性和稳定性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。