Запись в журнал транзакций, когда журнал приходит в полный размер
Допустим, у нас есть база данных с определенным журналом транзакций initial size
до 100 МБ и maxsize
НЕОГРАНИЧЕНО.
SQL Server будет записывать в журнал последовательно от начала до конца. В одной книге я нашел следующее предложение:
Когда SQL Server достигает конца файла в соответствии с размером, в котором он был установлен, он снова возвращается к началу, ища свободное место для использования. SQL Server может оборачиваться без увеличения размера физического файла журнала, когда есть свободное пространство для виртуальных транзакций. Виртуальное пространство журнала транзакций становится свободным, когда SQL Server может записывать данные из журнала транзакций в базовые таблицы в базе данных.
Последняя часть действительно смущает меня. Что означает последнее предложение? Означает ли это, что SQL Server перезаписывает старые зафиксированные транзакции новыми транзакциями?
Насколько я знаю, это было бы не так, потому что все транзакции должны быть представлены до резервного копирования.
Я не знаю, был ли я достаточно ясен, я обновлю сообщение, если понадобятся некоторые объяснения.
2 ответа
Это относится только к журналу транзакций SIMPLE:
Виртуальное пространство журнала транзакций становится свободным, когда SQL Server может записывать данные из журнала транзакций в базовые таблицы в базе данных.
Это означает, что после того, как транзакции фактически записаны в физические таблицы, они больше не нужны в журнале транзакций. Потому что в этот момент отключение питания или другой катастрофический сбой больше не могут привести к тому, что транзакции будут "потеряны", так как они уже были сохранены на диске.
Не нужно ждать, пока резервное копирование не будет сделано. Однако, если вам необходимо полное восстановление на определенный момент времени, вы должны использовать полное журналирование транзакций, и в этом случае журналы транзакций никогда не будут перезаписываться.
Записи журнала больше не нужны в журнале транзакций, если выполняются все следующие условия:
Сделка, частью которой он является, совершила. Все измененные страницы базы данных были записаны на диск контрольной точкой. Запись журнала не требуется для резервной копии (полная, разностная или журнальная). Запись в журнале не требуется для любой функции, которая читает журнал (например, зеркальное отображение базы данных или репликация).
Далее читает,
https://technet.microsoft.com/en-us/magazine/2009.02.logging.aspx
https://technet.microsoft.com/en-us/library/jj835093%28v=sql.110%29.aspx