Middle+
29
0
questionbank

Какие аномалии могут возникать при выполнении параллельных транзакций?

Answer from sobes.tech neural network

При параллельном выполнении транзакций могут возникать следующие аномалии:

  1. Потерянное обновление (Lost Update): Одна транзакция перезаписывает изменения другой транзакции до того, как эти изменения были зафиксированы.

    ВремяТранзакция 1Транзакция 2
    t1Читает значение Валанс (например, 100)
    t2Читает значение Валанс (например, 100)
    t3Увеличивает Валанс на 10 (Валанс = 110)
    t4Увеличивает Валанс на 20 (Валанс = 120)
    t5Фиксирует изменения (Валанс становится 110)
    t6Фиксирует изменения (Валанс становится 120)

    Результат: Несмотря на два увеличения, конечное значение Валанс равно 120, а не 130. Увеличение от Транзакции 1 потеряно.

  2. Грязное чтение (Dirty Read): Одна транзакция читает незафиксированные изменения другой транзакции. Если транзакция, сделавшая изменения, откатится, прочитанные данные окажутся недействительными.

    ВремяТранзакция 1Транзакция 2
    t1Начинает изменение Валанс (100 -> 110)
    t2Читает Валанс (получает 110)
    t3Откатывает изменение (Валанс возвращается к 100)
    t4Использует Валанс = 110 в расчетах, хотя фактическое значение 100

    Результат: Транзакция 2 основыв

При параллельном выполнении транзакций могут возникать следующие аномалии:

  1. Потерянное обновление (Lost Update): Одна транзакция перезаписывает изменения другой транзакции до того, как эти изменения были зафиксированы.

    ВремяТранзакция 1Транзакция 2
    t1Читает значение Валанс (например, 100)
    t2Читает значение Валанс (например, 100)
    t3Увеличивает Валанс на 10 (Валанс = 110)
    t4Увеличивает Валанс на 20 (Валанс = 120)
    t5Фиксирует изменения (Валанс становится 110)
    t6Фиксирует изменения (Валанс становится 120)

    Результат: Несмотря на два увеличения, конечное значение Валанс равно 120, а не 130. Увеличение от Транзакции 1 потеряно.

  2. Грязное чтение (Dirty Read): Одна транзакция читает незафиксированные изменения другой транзакции. Если транзакция, сделавшая изменения, откатится, прочитанные данные окажутся недействительными.

    ВремяТранзакция 1Транзакция 2
    t1Начинает изменение Валанс (100 -> 110)
    t2Читает Валанс (получает 110)
    t3Откатывает изменение (Валанс возвращается к 100)
    t4Использует Валанс = 110 в расчетах, хотя фактическое значение 100

    Результат: Транзакция 2 основыв

Register or sign in to get access to full answers for all questions from the question bank.

sqltransaction-anomaliesconcurrency-controlisolation-levelslockingdeadlocksrace-conditions