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

Откуда:
Сообщений: 5
Добрый день!

Огромная просьба к знатокам SQL помочь разобраться в вопросе.

Есть БД SQL 1C размером 30 ГБ. В базе регулярно проводятся доработки. Простая модель восстановления.

В определенный момент размер лога вырос до 60 ГБ. Перед этим, после очередного обновления, была проблема с долгим проведением некоторых документов в 1С, возникали конфликты блокировок. Проблему решил средствами 1С вручную запустив регламентное задание пересчета итогов регистров накопления.

Пытаюсь уменьшить размер лога:

1) backup/restore - не помогло

2) на копии БД сделал SHRINK фала журнала средствами Manadgement Studio - лог уменьшился с 60 ГБ до 1040 КБ! И на первый взгляд с базой все ОК.

В связи с этим два вопроса:

1) Можно ли делать SHRINK в моем случае (простая модель) и чревато ли это неблагоприятными последствиями (многие источники не рекомендуют)?

2) Почему лог не сжимается автоматически? Как я понял, для простой модели лог должен урезаться автоматически при достижении контрольной точки. Бэкапы делаются каждую ночь.

Проверил, в свойствах сервера значение Интервал восстановления = 0 (минут).
В свойствах базы параметр Начальный размер=4 МБ, а Автоувеличение/макс. размер стоит 10% и 2097152 МБ соответственно. Получается лог автоматом должен урезаться до размера верхней границы, которая у меня 2097152 МБ и еще не достигнута?
13 ноя 19, 14:38    [22015424]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36972
1. Сначала делать шринк, потом заставлять сервер расширять лог, чтобы это работало подольше. Мсье понимает толк в феншуях, а сервер железный, все стерпит.
2. Не должен.
13 ноя 19, 14:40    [22015427]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
londinium
Member

Откуда: Киев
Сообщений: 1170
https://www.brentozar.com/archive/2016/03/my-favorite-system-column-log_reuse_wait_desc/
13 ноя 19, 14:45    [22015436]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
soulriwer
Member

Откуда:
Сообщений: 5
londinium
https://www.brentozar.com/archive/2016/03/my-favorite-system-column-log_reuse_wait_desc/

SELECT name, log_reuse_wait_desc FROM sys.databases;

NOTHING


Для тестовой базы, для которой уже сделал SHRINK значение log_reuse_wait_desc=CHECKPOINT

Сообщение было отредактировано: 13 ноя 19, 15:19
13 ноя 19, 15:16    [22015494]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
о да привет, ушло уже то, что было, а то лог бы вам уже весь диск засрал.
и была это открытая транзакция.
ваши эти "супер-проводки" открыли и не закрыли.
и все время, пока транзакция висела, лог не мог усекаться.
транзакцию срубили -- вот вам и NOTHING
13 ноя 19, 15:18    [22015497]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
soulriwer
Member

Откуда:
Сообщений: 5
Yasha123, Так и какой вывод? Все таки должен лог сам усекаться (надо тупо подождать) или нет?
И чего ждать? Бэкапы то каждый день делаются и уже неделя прошла с "того, что было" :-)
13 ноя 19, 15:24    [22015508]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
msLex
Member

Откуда:
Сообщений: 8091
soulriwer,

лог не усекается (shrink) сам, автоматически освобождается место внутри файла(ов) лога.
13 ноя 19, 15:27    [22015512]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
soulriwer
Все таки должен лог сам усекаться (надо тупо подождать) или нет?

вы неправильно понимаете "лог должен усекаться".
это не есть "уменьшаться в размерах",
так что не ждите у моря погоды.
усекаться он у вас давно начал, с того момента, как транзакция отвалилась.
усекаться = перезаписываться.
если сейчас опросите размер свободного места в логе,
поймете, что он весь пустой.
потому что уже "усекся"
13 ноя 19, 15:28    [22015514]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
soulriwer
Member

Откуда:
Сообщений: 5
Yasha123, Спасибо большое за ответ! Действительно, запутался в понятиях shrink/truncate.
Как я понял, единственный способ уменьшить размер журнала в моей ситуации это именно сделать SHRINK вручную? Сам сервер уже никогда его не ужмет?)
13 ноя 19, 15:51    [22015548]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
soulriwer
Yasha123, Спасибо большое за ответ! Действительно, запутался в понятиях shrink/truncate.
Как я понял, единственный способ уменьшить размер журнала в моей ситуации это именно сделать SHRINK вручную? Сам сервер уже никогда его не ужмет?)

да.
только сильне не ужимайте, оставьте ему 2Гб хотя бы.
и как только видите, что лог начал расширяться, проверяйте открытые транзакции.
13 ноя 19, 15:58    [22015560]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
и вот по этому поводу:
soulriwer
Бэкапы то каждый день делаются и уже неделя прошла с "того, что было" :-)

бэкапам до лога нет никакого дела, как и логу до бэкапов.
в простой модели нет бэкапов лога, которые бы его усекали.
лог самоусекается
13 ноя 19, 16:02    [22015566]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
soulriwer
Member

Откуда:
Сообщений: 5
Yasha123
и как только видите, что лог начал расширяться, проверяйте открытые транзакции.

А если в свойствах базы просто уменьшить верхний предел размера лога (параметр Максимальный размер)?

Сообщение было отредактировано: 13 ноя 19, 16:05
13 ноя 19, 16:05    [22015570]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
тогда сервер автоматически откатит то, что попытается переполнить лог
13 ноя 19, 16:07    [22015576]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7762
soulriwer,

Так и поступают - размер журнала устанавливатся фиксированным исходя из рабочей нагрузки. Но в случае непредвиденной ситуации может произойти авария. Например, не учли объем, требуемый для переиндексации.

Можно сделать так - сначала максимально уменьшить размер журнала, затем выставить по размеру нагрузки на 60Гб и указать размер приращения журнала 2-5% от установленного максимального размера, т.е. 2-3 Гб. В этом случае VLF распределятся равномерно и не слишком большим количеством, влияющим на производительность.
13 ноя 19, 16:13    [22015581]     Ответить | Цитировать Сообщить модератору
 Re: БД SQL Простая модель - почему растет размер журнала транзакций?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4730
soulriwer,

Лог используется на ПРОСТОЙ модели для транзакций. У вас были запущены одна или более крупных транзакций, который судя по всему, перелопатили большую часть БД или сделали много изменений. После коммита транзакции место в логе более не используется и может быть реюзано.

Поэтому лог растет.

Если эти транзакции регулярны, то нет смысла шринкать лог.

Лог сам сокращаться не будет.
13 ноя 19, 17:30    [22015625]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить