«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как можно реализовать оптимистическую блокировку в MySQL?

Как можно реализовать оптимистическую блокировку в MySQL?

Опубликовано 7 ноября 2024 г.
Просматривать:956

How Can Optimistic Locking be Implemented in MySQL?

Оптимистическая блокировка в MySQL: подробное объяснение

Оптимистическая блокировка — это метод, используемый в системах управления базами данных для предотвращения конфликтов данных, которые могут возникнуть, когда несколько пользователей пытаются одновременно обновить одни и те же данные. Хотя MySQL изначально не поддерживает оптимистическую блокировку, ее можно реализовать с помощью стандартных инструкций SQL. часто изменяться несколькими пользователями. Вместо блокировки данных этот метод позволяет выполнять одновременные обновления, но проверяет наличие конфликтов перед фиксацией изменений.

Реализация в MySQL

Один метод реализации оптимистичных блокировка в MySQL осуществляется путем добавления столбца версии в таблицу. При обновлении строки столбец версии увеличивается. Перед фиксацией обновления приложение проверяет, соответствует ли текущий номер версии номеру версии, хранящемуся в строке на момент запуска обновления. Если числа совпадают, обновление фиксируется; в противном случае возник конфликт, и приложение должно обработать его соответствующим образом.

Пример кода

Следующий фрагмент кода демонстрирует оптимистическую блокировку с использованием столбца версии:

-- выберите строку и ее версию ВЫБЕРИТЕ значение 1, значение 2, версию ИЗ Таблицы ГДЕ iD = @theId; -- Рассчитать новые значения -- ... -- Обновляем таблицу, проверяя версию ОБНОВИТЬ таблицу SET val1 = @newVal1, val2 = @newVal2, версия = версия 1 ГДЕ iD = @theId И версия = @oldversion; -- Проверьте затронутые строки ЕСЛИ @@ROWCOUNT = 1 -- Зафиксируйте изменения -- ... ЕЩЕ -- Обработка столкновений -- ... END IF;

Транзакции и нетранзакции

-- Select the row and its version
SELECT val1, val2, version
FROM theTable
WHERE iD = @theId;

-- Calculate new values
-- ...

-- Update the table, checking the version
UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2,
    version = version   1
WHERE iD = @theId
    AND version = @oldversion;

-- Check for affected rows
IF @@ROWCOUNT = 1
    -- Commit the changes
    -- ...
ELSE
    -- Handle collision
    -- ...
END IF;

Вывод

Оптимистическая блокировка не является встроенной функцией. особенность MySQL, но ее можно реализовать с помощью стандартных инструкций SQL. Добавив столбец версии в таблицу, приложения могут выполнять оптимистическую блокировку и обнаруживать конфликты перед фиксацией обновлений, обеспечивая согласованность данных в параллельных средах.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3