为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM Database Server 64 V8 --03134283968-20230103-178822-20033
【操作系统】:4.19.90-23.8.v2101.Ky10.x86_64
【CPU】: Hygon C86 7285 32-core Processor
【问题描述】*:数据库表update没有报错,但是偶发性更新不成功。
具体现象是:我的程序每分钟会执行一次update,sql更新没有报错,sql也执行了,我开启了sql日志,可以看到每次update都成功执行了,执行完也正常commit了。
现在问题是:有时候会出现很早之前的一条数据,但过一会又正常了,等一会儿,又回到了很早之前的数据,来回反复。
一开始我怀疑是事务没有提交,但是后来发现明显不太像,如果是事务未提交,不应该一会好一会不好的情况,而且每次都回退到固定的数值。事务隔离级别是默认的提交读,因此不太可能出现脏读的。
我在开发环境部署了相同版本的数据库,未能复现该问题(开发环境为CentOS7系统)。
排查了很久,黔驴技穷,特来请教专家老师,还有什么思路?
建议检查下程度里的执行逻辑,
1 是不是每条update后都及时跟了commit;提交、
2 另外还要看下是否使用了多线程或多session里执行提交。如果你要保证每次数据查询准确,最好保证在一个session里串行来执行,每次commit后,再select查询检查下更新值。
开启审计,针对单表的update跟踪分析下