我在批处理过程中使用Node.js和MySQL。该过程同时进行大量查询,并包含许多作业。我注意到更新声明不时有效。
UPDATE `Configuration` SET `Value`='2015-06-08 11:35:00' WHERE `ID`=6
我已打开常规日志并在那里找到了查询,但表格中的数据尚未更改。查询在作业结束时大约每5分钟运行一次。但其他工作继续提出疑问。
实施例: jobA正在提出很多疑问。同时jobC从Configuration表中生成SELECT。然后jobC执行一系列与Configuration表无关的查询。一旦jobC完成了一堆,它就会对Configuration表运行两个查询:SELECT然后UPDATE。
示例中的配置表未用于任何其他作业或事务。
我在测试期间发现,当jobA负载很重时,UPDATE配置表查询无效。
任何人都可以告诉我问题是什么或我应该在哪里进一步观察?
答案 0 :(得分:0)
我建议调查MySQL的隔离模式。
我需要一些关于你的问题的更多信息(它不会更新而不是成功更新以及在什么条件下更新)但是如果它运行得太频繁,那么另一个事务(如果它们很长?)可能还没有完成运行如果它没有读取脏数据,它可能不会执行更新。这一切都取决于作业的相对速度及其隔离模式。