Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Странное поведение MSSQL при модели с неполным протоколированием  [new]
Python of Jungle
Member

Откуда: Ставрополь
Сообщений: 33
Захотелось избежать разрастания логов при пересоздании индексов путем временного переключения на режим неполного протоколирования. И тут стало наблюдаться странное кино. Перестроение индекса при неполной модели восстановления записывает в журнал транзакций небольшой объем, а бэкап этого журнала в 7 раз больше. Специально протестировал вчистую. На всякий случай приведу всю последовательность действий.

Дано: База данных размером 8,18 Гб. На сервере включено сжатие резервных копий. Ограничения на размер файлов данных и журнала не стоят.

Предварительно выполнены следующие действия:

1. Модель восстановления: Простая
2. Сжать файлы: журнал транзакций до 0 Мб
3. Модель восстановления: Полная.
4. Перезапуск сервера, полное отсоединение и присоединение базы.

Файлы:

  • BUH.MDF 8.18 Гб
  • BUH_log.LDF 576 Кб[/li]

    Выполнен первый план обслуживания:

    1. Тестирование БД
    2. Сжатие БД
    3. Полная резервная копия.

    Файлы:

  • BUH.mdf 8.18 Гб
  • BUH_log.ldf 576 Кб
  • BUH_backup_2016_03_26_012450_2656250.bak 1.54 Гб

    Выполнен второй план обслуживания

    1. Тестирование БД
    2. Сжатие БД
    3. Контрольная точка с помощью T-SQL
    (USE [BUH]; CHECKPOINT; GO)
    4. Резервная копия журнала транзакций
    5. Переключение модели восстановления на режим неполного протоколирования с помощью T-SQL
    (ALTER DATABASE [BUH] SET RECOVERY BULK_LOGGED; GO)
    6. Перестроение индекса
    7. Контрольная точка с помощью T-SQL
    8. Резервная копия журнала транзакций
    9. Переключение модели восстановления на полный режим с помощью T-SQL
    10. Полная резервная копия.

    В итоге файлы:

  • BUH.mdf 8.18 Гб
  • BUH_log.LDF 163 Мб
  • BUH_backup_2016_03_26_012450_2656250.bak 1.54 Гб
  • BUH_backup_2016_03_26_013058_0468750.trn 16 Кб
  • BUH_backup_2016_03_26_014228_3437500.trn 1.11 Гб
  • BUH_backup_2016_03_26_014948_3281250.bak 1.54 Гб

    Очевидно, что в процессе пересоздания индекса журнал увеличился с 576 Кб до 163 Мб. А вот резервная копия журнала транзакций этого участка составила 1.11 Гб. Шринков не было, за процессом я следил. Вопрос: Каким образом? Может кто из гуру мне объяснит?
  • 26 мар 16, 02:15    [18980654]     Ответить | Цитировать Сообщить модератору
     Re: Странное поведение MSSQL при модели с неполным протоколированием  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31427
    Python of Jungle
    Очевидно, что в процессе пересоздания индекса журнал увеличился с 576 Кб до 163 Мб. А вот резервная копия журнала транзакций этого участка составила 1.11 Гб. Шринков не было, за процессом я следил. Вопрос: Каким образом?
    Может, вы просто добавляете бакап в существующий файл, а не переписываете файл заново?
    26 мар 16, 10:56    [18980962]     Ответить | Цитировать Сообщить модератору
     Re: Странное поведение MSSQL при модели с неполным протоколированием  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31427
    alexeyvg
    Python of Jungle
    Очевидно, что в процессе пересоздания индекса журнал увеличился с 576 Кб до 163 Мб. А вот резервная копия журнала транзакций этого участка составила 1.11 Гб. Шринков не было, за процессом я следил. Вопрос: Каким образом?
    Может, вы просто добавляете бакап в существующий файл, а не переписываете файл заново?
    Хотя нет, у вас же видно, что файлы разные...
    В любом случае, посмотрите, что внутри файлов.
    26 мар 16, 10:59    [18980968]     Ответить | Цитировать Сообщить модератору
     Re: Странное поведение MSSQL при модели с неполным протоколированием  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9396
    Python of Jungle
    Каким образом? Может кто из гуру мне объяснит?
    https://technet.microsoft.com/en-us/library/ms190692(v=sql.105).aspx
    Under the bulk-logged recovery model, if a log backup covers any bulk operations, the log backup contains both log records and the data pages that were changed by bulk operations.
    26 мар 16, 11:20    [18980999]     Ответить | Цитировать Сообщить модератору
     Re: Странное поведение MSSQL при модели с неполным протоколированием  [new]
    Pavel1211
    Member

    Откуда: Екатеринбург
    Сообщений: 205
    Python of Jungle,

    Данные должны попасть в бэкап лога, а в самом логе при неполном протоколировании их нет.
    В общем вам invm привел толковую ссылку. Там все понятно написано
    26 мар 16, 13:10    [18981275]     Ответить | Цитировать Сообщить модератору
     Re: Странное поведение MSSQL при модели с неполным протоколированием  [new]
    Python of Jungle
    Member

    Откуда: Ставрополь
    Сообщений: 33
    Pavel1211,

    Ссылка толковая, не спорю, но я в курсе и механизм знаю. Кто нибудь может сказать, каким образом можно узнать более предметно, что именно содержится в бэкапе. Повторил еще раз на другой базе. Предыдущая была 1С, сейчас попробовал на совершенно другой. Результат тот же самый. Х его з. Чудеса просто. откуда берется столько информации для записи в резервную копию? Кто нибудь знает, как развернуть бэкап вручную и посмотреть, что там содержится? исравнить с журналом бы. Не то чтобы было так принципиально... Просто удивило.
    26 мар 16, 23:06    [18982665]     Ответить | Цитировать Сообщить модератору
     Re: Странное поведение MSSQL при модели с неполным протоколированием  [new]
    Python of Jungle
    Member

    Откуда: Ставрополь
    Сообщений: 33
    Можно попросить кого-нибудь проделать в точности то же самое для проверки? У меня осталось одно предположение - сервер держит опереации в кэше и, не смотря на контрольную точку, закидывает их в следующий бэкап. Иначе я объяснить это не могу.
    26 мар 16, 23:16    [18982693]     Ответить | Цитировать Сообщить модератору
     Re: Странное поведение MSSQL при модели с неполным протоколированием  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9396
    Python of Jungle
    но я в курсе и механизм знаю
    Серьезно? И почему же тогда возник вопрос?

    В bulk-logged для bulk insert в журнал пишутся только операциии выделения страниц.
    Когда делается резервная копия журнала, в нее будет записано содержимое всех страниц, затронутых bulk-операциями.
    Если этого не сделать, накатить резервную копию журнала будет невозможно.
    26 мар 16, 23:21    [18982711]     Ответить | Цитировать Сообщить модератору
     Re: Странное поведение MSSQL при модели с неполным протоколированием  [new]
    Python of Jungle
    Member

    Откуда: Ставрополь
    Сообщений: 33
    invm,

    Мне в голову не пришло, что индекс - это та информация, которая считается необходимой для восстановления БД. Всем спасибо большое, извиняюсь за дурацкий вопрос. Тему можно закрывать.
    28 мар 16, 07:06    [18984847]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить