Насколько важны VLF при рассмотрении производительности базы данных? Что бы описать оптимальную ситуацию для VLF?
sql-server
performance
transaction-log
the_good_pony
источник
источник
Ответы:
Что такое виртуальный файл журнала?
SQL Server делит файл журнала транзакций для каждой базы данных на более мелкие фрагменты, называемые «виртуальными файлами журнала» (или сокращенно VLF). Их основная функция - маркеры усечения при резервном копировании журнала, т. Е. SQL Server будет очищать (и отмечать доступные для повторного использования) VLF, которые полностью пусты. В MSDN есть раздел «Журнал транзакций - физическая архитектура» .
От чего зависит количество VLF?
Каждый раз, когда файл журнала увеличивается (с помощью автоматического роста или ручного увеличения), новый раздел файла журнала делится на несколько VLF-файлов, исходя исключительно из размера нового раздела (существующий журнал транзакций остается один). Таким образом, небольшие настройки автоматического роста (то есть 10-процентный автоматический рост, который является настройкой по умолчанию) вызовут создание большого количества VLF.
Каковы последствия большого количества VLF?
Основная проблема, которую вызывает большое количество VLF:
DBCC
поскольку они используют моментальные снимки базы данных в фоновом режиме, чтобы облегчить проверку согласованности без блокировки).Как я могу узнать, сколько VLF есть в моей базе данных?
DBCC LOGINFO
вернет 1 строку для каждого VLF в журнале транзакций вашей базы данных. В этом вопросе есть несколько полезных сценариев для применения этого во всех базах данных на сервере.Сколько VLF слишком много?
Это суждение, которое вы должны сделать для себя. Мое эмпирическое правило гласит, что с 50 лет не стоит возиться, а с более чем 100 (или около того) я исправляю настройки автоматического роста и мысленно отмечаю (в следующем окне обслуживания) уменьшить и снова вырастить журнал (как показано ниже) ,
Помогите! У меня одиннадцать миллиардов VLF, и восстановление моей базы занимает весь день!
Краткое описание (из блога Кимберли Триппа ):
BACKUP LOG
)DBCC SHRINKFILE
с,TRUNCATEONLY
чтобы уменьшить размер файла журнала до минимально возможного.ALTER DATABASE [...] MODIFY FILE [...] SIZE=newsize
чтобы изменить размер журнала транзакций за один шаг **.** Примечание. Если у вас очень большой файл журнала (десятки ГБ или более), вы можете изменить размер за несколько шагов, чтобы получить соответствующее количество VLF-файлов соответствующего размера, чтобы избежать чрезмерного «непродолжительного» резервного копирования журнала. Поскольку VLF - это единица усечения, они также определяют размеры резервной копии журнала, как подробно описано в блоге Кима .
источник