Допустим, для SQLServer2008R2 и выше, с полным режимом восстановления баз данных.
Я всегда думал, что :
Когда транзакция фиксируется (COMMIT), транзакция записывается в журнал транзакций в ОЗУ.
Когда происходит CHECKPOINT (через некоторое время и / или некоторые транзакции и другие критерии), транзакции между последним CHECKPOINT и текущим записываются на диск.
Когда происходит BACKUP LOG, данные записываются в файл MDF.
Я прав? Некоторые из моих коллег говорят, что я неправ, и трудно найти правильный ответ, даже с BOL.
Благодарность!
sql-server
Patator
источник
источник
Ответы:
К сожалению, в ответах на вопрос о том, как работает COMMIT, есть ряд ошибок, поэтому я добавлю еще одну. Смотрите как это работает: Боб DORR в SQL Server ввода / вывода презентации для деталей и SQL Server 2000 I / O Basics . Вот как это работает:
Все полностью зарегистрированные записи данных (изменения) происходят в точно следующей последовательности (см. Понимание того, как SQL Server выполняет запрос: запись данных ):
COMMIT делает следующее
CHECKPOINT выполняет следующее (упрощенно), см. Как работают контрольные точки и что регистрируется :
Операции записи по- разному выполняются для операций с минимальной регистрацией, см. Операции, которые могут быть минимально зарегистрированы . Примерно минимально зарегистрированные операции действуют следующим образом (упрощенно):
источник
Транзакция записывается в журнал транзакций еще до изменения страницы или данных в соответствии с запросом. Это называется записью перед записью (WAL). Если происходит сбой SQL Server во время обновления страницы в памяти, WAL гарантирует, что механизм БД сможет прочитать журнал транзакций и откатить транзакцию. Это свойство ACID СУБД.
Контрольная точка сбрасывает грязные страницы из буфера на диск. Он ведет себя немного по-другому для tempdb . Грязная страница - это страница, которая изменилась с момента чтения с диска. Этот процесс контрольной точки создает отметку в журнале транзакций до момента, когда транзакции были зафиксированы. После сбоя восстановление знает, что все транзакции до этой отметки были совершены. Вы можете выдать контрольную точку вручную с помощью команды TSQL.
Нет, когда происходит резервное копирование журнала SQL Server копирует информацию журнала транзакций из файла журнала базы данных на диск, на который вы записываете резервную копию. Операция резервного копирования считывает данные с диска и записывает данные на диск.
Я хотел бы, чтобы вы прочитали ссылки ниже
Понимание ведения журнала и восстановления в SQL Server, уже отмеченное Марком
SQL Server 2008 Внутренние компоненты и книга устранения неполадок
Архитектура и управление журналом транзакций
источник
Ниже будут разъяснены вещи для вас:
Ссылаться на :
источник