分析问题的思维(1)

一、
遇到一个生产问题,现象是一张表的ID字段和CREATE_TIME字段不匹配,排序时不一致。
比如按照ID降序,CREATE_TIME有交错。按照CREATE_TIME降序,ID有交错:
000199 10月27号
000198 10月26号 
000197 10月25号
000196 10月26号
000195 10月24号
或者
000199 10月27号
000198 10月26号
000196 10月26号
000197 10月25号
000195 10月24号

二、
分析:ID是从sequence里取的,CREATE_TIME是应用程序取的系统时间

三、
假设1:时间有问题
如果时间有偏差,差几秒、几分钟是可以理解的,但是从现象上看,出现了26号-25号-26号这样的时间跳跃,时间只会往前加不会往回走
假设2:sequence有问题
sequence是数据库控制的,并且设置了缓存

四、
论证:询问dba,了解到数据库使用双主模式,所以两台机器都有sequence缓存,会造成这样的情况比如:A数据库缓存了100到200,B数据库缓存了200到300。插库的时候可能先从B数据库插入,再从A数据库插入

五、
解决:由于应用需要ID和CREATE_TIME保持一致增长,去掉了数据库中的sequence缓存

六、方法
分析-假设-论证-解决
 

猜你喜欢

转载自blog.csdn.net/csj50/article/details/109305067
今日推荐