0

我有一个简单的 sql 调用,例如:-

select col1,col2 from table1

有时系统会运行以下内容:-

update table1 
set col3 = 'something' 
where col1 ='s1' and col2 ='s2'

这些查询通过我们服务器上运行的各种应用程序运行,并且只发生在一个大约有 100k 行的表上。

我有数百万行的表 - 它不会在它们上超时,但不确定它为什么会在这个上。

这些查询整天运行,没有任何问题,但有时在白天 - 特别是在高峰时段 - 它们因错误而失败 - 超时已过期 -

你能告诉我我可以尝试解决这个错误吗

我需要执行某种类型的锁定吗?

同样,如果用户正在更新评论,然后系统上的其他用户尝试更新表中的同一行 - 它是否会使第二个用户超时,因为该行已被锁定以进行编辑 - 有没有办法解决这个问题?

4

1 回答 1

2

我找到了答案——因为它是旧系统中的一个表——以前的用户没有添加主键,认为那里已经有一个虚拟主键,但这是不对的。

因为 sql 需要很长时间才能进行编辑并且会超时。

所以我只是在表中创建了一个复合键,现在它工作正常。

结论 - 如果您要处理更新、删除数据,永远不要有没有主键的表

感谢大家的意见

于 2012-05-22T10:12:11.987 回答