多线程期间的数据一致性

时间:2018-04-25 19:24:49

标签: concurrency transactions acid

假设我有3个线程,T1,T2和T3来自应用程序,所有这些都在同一时间开始。它们都从某个表,行和列中读取相同的值。可以说这个值是50 1. T1很快。完成时间为100毫秒。完成后,它会用+5更新它读取的值。因此,它在数据库中写入 55
2. T2有点慢。完成700毫秒。完成后,它会将其读取的值加上+10。因此,它使用 60 更新数据。
3. T3甚至更慢,并在1300ms完成。完成后,该线程增加+15。因此,该值变为 65

我希望从SO中学到的解决方案是在这种情况下如何处理数据一致性。因为,显然在T3结束时,该值应 80 (50 + 5 T1 + 10 T2 + 15 T3),而不是65。

如果需要,我可以告诉我是否可以更清楚地提出问题。

1 个答案:

答案 0 :(得分:0)

好吧,鉴于我们讨论的是SQL数据库,您必须使用 serializable 隔离级别的事务。阅读它here