Как база данных обрабатывает это состояние в транзакции?

У меня есть вопрос об обработке транзакций базы данных.

Если база данных закрыта, когда транзакция записывает некоторые данные в долговременное хранилище, но не все, как они разрешают это состояние?

(+) Как клиент, имеющий автоматическую логику повторных попыток, может указать, что база данных завершила транзакцию, но отключилась до получения ответа?

Спасибо за прочтение.

1 ответ

Решение

Распространенным решением для аварийного восстановления СУБД является алгоритм, используемый в алгоритме ARIES. Проще говоря, база данных поддерживает журнал записи с опережением, в который все изменения записываются до их применения. После сбоя менеджер восстановления отменяет изменения, которые не были зафиксированы, и следит за тем, чтобы все зафиксированные изменения были записаны на диск.

(+) Приятной особенностью реляционных баз данных является то, что они предоставляют гарантии ACID. Благодаря свойству долговечности клиенты точно знают, что все успешно зафиксированные транзакции отражаются на диске, и, следовательно, нет необходимости обрабатывать сценарии сбоя СУБД особым образом.

Другие вопросы по тегам