Согласованность данных в течение нескольких потоков - PullRequest
0 голосов
/ 25 апреля 2018

Скажем, у меня есть 3 потока: T1, T2 и T3 из приложения, которые запускаются в одно и то же время.Все они читают одно и то же значение из определенной таблицы, строки и столбца.Допустим, это значение 50.1. Т1 быстрый.Завершается за 100мс.После завершения он обновляет прочитанное значение с +5.Итак, он записывает 55 в базу данных.2. T2 немного медленнее.Завершается за 700мс.И после завершения это добавляет +10 к ценности, которую это прочитало.Таким образом, он обновляет данные с 60 .3. T3 еще медленнее и завершается за 1300 мс.По завершении эта тема добавляет +15.Таким образом, значение становится равным 65 .

. Решение, которое я надеюсь извлечь из SO, заключается в том, как справиться с непротиворечивостью данных в таких случаях.Так как в конце T3 значение должно быть 80 (50 + 5 T1 + 10 T2 + 15 T3), а не 65.

Дайте мне знать, если я смогу сделатьмой вопрос будет понятнее, если потребуется.

1 Ответ

0 голосов
/ 26 апреля 2018

Хорошо, учитывая, что мы говорим о базе данных SQL, вы должны использовать транзакции с сериализуемым уровнем изоляции.Читайте об этом здесь .

...