我有一个简单的SQL调用,如: -
select col1,col2 from table1
有时系统运行以下内容: -
update table1
set col3 = 'something'
where col1 ='s1' and col2 ='s2'
这些查询是在我们服务器上运行的各种应用程序上运行的,它只发生在一个有100k行的表上。
我有数百万行的表 - 它们没有超时,但不确定为什么会这样做。
这些查询全天运行没有任何问题,但有时在白天 - 特别是在高峰时段 - 它们会因错误而失败 - 超时到期 -
请告诉我,我可以尝试解决此错误
我是否需要执行某种类型的锁定?
如果用户正在更新评论,然后系统上的其他用户尝试更新表中的同一行,那么它是否正确 - 它会超时第二个用户因为该行被锁定以进行编辑 - 是否有办法那个?
答案 0 :(得分:2)
我找到了答案 - 因为它是旧系统中的一个表 - 以前的用户没有添加一个主键,认为那里已经有一个虚拟主键,但它不对。
由于sql编辑时间太长而且会超时。
所以我只是在表格中制作了一个复合键,现在它正常工作。
结论 - 如果您打算处理更新,删除数据,那么永远不要有没有主键的表
感谢大家的评论