![]() |
1
1
|
![]() |
2
0
如果使用
或者更具体地说:
我想这是我个人的偏好,但我从来都不是
附录 作为对评论的回应,我不认为有任何比赛条件的可能性,但我不是百分之百确定。我之所以不相信这一点,是因为尽管查询读起来是一个SELECT和一个更新,但它是一个语法糖,它只是一个更新,并且使用与顶部查询完全相同的计划和锁。然而,由于我不确定,我决定测试: 首先,我在temp DB中设置了一个示例表,以及一个记录表来记录更新的id
然后,在10个不同的SSMS窗口中,我运行了以下操作:
整个过程运行了20分钟,更新了约500000行,然后我停止了所有10个线程。由于两次更新同一行会在插入到T2时引发主键冲突并出错,并且需要停止所有10个线程,这表明不存在争用条件,为了确认这一点,我运行了以下命令:
正如所料,它没有返回任何行。 我很高兴被证明是错的,我承认我很幸运,这100000次迭代中没有一次发生冲突,但我不相信这是运气。我真的相信只有一个锁,因此不管您是否有事务,您只需要正确的隔离级别。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |