Назад | Перейти на главную страницу

Можно ли ограничить размер временного журнала в SQL Server 2005?

У меня проблема, которую я исследую, из-за которой мой лог-файл tempdb сильно разрастается по сравнению со всем, что может показаться разумным. Сегодня утром он был в 10 раз больше файлов данных. Тем не менее, база данных продолжает нормально функционировать, и единственным ограничением на размер временного журнала, похоже, является размер диска, на котором он находится.

Тогда мой вопрос, будет ли мне безопасно ограничивать размер templog, я слышал, что вы не должны ограничивать размер tempdb, поскольку это критично для работы, которая должна выполняться на сервере sql. Но тот факт, что файл журнала увеличивается до размера, разрешенного диском, предполагает, что я могу ограничить его, ничего не нарушая. Так ли это? и если да, то существует ли нижняя граница (т. е. общий размер файлов данных), я не должен ограничивать ее ниже?

Кстати, я понимаю, что это не решение проблемы роста журнала, которая изучается, но не может быть решена в ближайшее время.

Привет,

У нас была аналогичная проблема, после того, как мы обратились в службу поддержки клиентов Microsoft и тщательно изучили проблему, мы рассмотрели следующие возможные причины и способы решения.

Причина:

Вероятная причина симптомов связана с тем, что на дисках / lun, на которых размещены пользовательские базы данных, возникают серьезные проблемы с ответами ввода-вывода; это приводит к тому, что автоматическая контрольная точка в пользовательских базах данных занимает очень много времени.

Теперь контрольная точка на базе данных tempdb возникает только тогда, когда журнал tempdb заполняется на 70%, а также имеет более низкий приоритет, чем контрольные точки базы данных пользователя. Таким образом, когда автоматическая контрольная точка в пользовательских базах данных выдается и пытается завершиться, из-за интенсивного использования tempdb файл журнала tempdb быстро заполняется; при 70% использовании журнала возникает контрольная точка tempdb, но она помещается в очередь после контрольной точки пользовательской базы данных.

По мере того, как контрольная точка пользовательской базы данных завершает работу, файл журнала tempdb продолжает заполняться, и если установлено автоматическое увеличение, файл журнала увеличивается, когда ему требуется больше места. Это причина того, что файл журнала продолжает расти.

Таким образом, наиболее вероятная основная причина описываемых вами симптомов связана с плохим ответом на ввод-вывод с дисков / lun для вашего пользователя и / или файлов базы данных / журнала tempdb.

Решение:

Мы работали над проблемой, пока разбирались с подсистемой ввода-вывода, настраивая предупреждение, которое запускалось, когда файл журнала tempdb становился заполненным на 75%, и в ответ выполняло задание, которое принудительно запускало «CHECKPOINT» вручную (которое имеет приоритет над автоматической системой контрольные точки), очищая журнал tempdb, предотвращая его неограниченный автоматический рост. По-прежнему рекомендуется оставить файл журнала на автоматическом увеличении на всякий случай.

Надеюсь это поможет.

Все, что вы собираетесь сделать, ограничив размер журнала, - это вызвать сбой, когда все, что растет бревно достигает предела. (Произойдет ошибка и, возможно, откат транзакции).

На самом деле, это может быть полезным способом увидеть, из-за чего журнал становится таким большим! :) Хотя даже лучше способом было бы использовать Perfmon для мониторинга счетчика SQL: Database: Log Used (kb), чтобы увидеть когда он растет, и это коррелирует с другой активностью на сервере.