2016-12-29 2 views
-1

Мы знаем, что на сервере SQL файл журнала транзакций содержит как журнал повтора, так и журнал отмены, однако в журнале транзакций MYSQL он содержит только журнал отмены, поэтому, как MYSQL выполняет операцию повтора, если он просто записывает только частичную транзакцию данные для успешной транзакции, а затем сервер вниз? Поскольку при перезагрузке сервера необходимо выполнить операцию повтора.Как MYSQL выполняет операцию повтора?

Eidt, Извините, я опечатка, я имею в виду, почему у MYSQL нет журнала повтора вместо журнала отмены.

+0

Сделка завершается успешно или не выполняется, если один запрос в транзакции завершается с ошибкой. Это означает, что транзакция ** не может быть частичной **. Если это частично, это не транзакция. Установив это, это означает, что нет никаких проблем с транзакциями. У вас есть проблема с чем-то другим, поэтому я предлагаю вам подробно написать, что это такое. – Mjh

+0

@ Mjh, я имею в виду частичную запись данных транзакции вместо транзакции, предположим, что транзакция очень большая. –

ответ

0

Это не делается на уровне MySQL, это касается различных типов таблиц, поддерживающих транзакции (например, innodb).

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

MySQL документация на innodb redo logs описывает, как InnoDB хранит журналы повтор:

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

Смежные вопросы