|
昨天才看到TOM这段关于时间戳漏洞的描述(十多年前阅读第一版时没有这个),开始以为理解了认为后续增量抽取也可能有问题,上午还发了一个关于这个的朋友圈,下午继续思考又发现不对,如果读取开始时间没有洞的话是不可能丢数据的,重看那段描述有这个疑问,为什么9:00开始第一次读所有数据(select * from table)会读不到事务在8:59:30提交所更改的数据呢?
我觉得可能说法(或者翻译)有误,那个9:00是指读完数据记下的时刻,这样就能解释通了,只要读开始时间比8:59:30早,就会读不到那个。
下次取数的开始时间以上次取数的开始时间为准,而不是结束时间,就不会有问题,大家觉得如何?
过了十年左右再来pub上发贴,有点感慨,我还在技术岗位上前行。 |
|