powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Состояние БД при усечении ЖТ
23 сообщений из 23, страница 1 из 1
Состояние БД при усечении ЖТ
    #40025532
Rex12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, мне периодически приходится производить усечение ЖТ. Я могу делать это как вручную днём, так и путём выполнения инструкции T-SQL (DBCC SHRINKFILE) в Плане обслуживания ночью. Но и днём, и ночью с БД работают люди.

У меня вопрос - стоит ли опасаться потенциальной возможности того, что пользователи запустят в этот момент какую-то транзакцию и это плохо отразится на БД? Нужно ли переводить БД в режим SINGLE_USER или RESTRICTED _USER?
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025535
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rex12
Друзья, мне периодически приходится производить усечение ЖТ. Я могу делать это как вручную днём, так и путём выполнения инструкции T-SQL (DBCC SHRINKFILE) в Плане обслуживания ночью. Но и днём, и ночью с БД работают люди.

У меня вопрос - стоит ли опасаться потенциальной возможности того, что пользователи запустят в этот момент какую-то транзакцию и это плохо отразится на БД? Нужно ли переводить БД в режим SINGLE_USER или RESTRICTED _USER?
Не отразится никак.
Но может просто не дать никакого эффекта, т.е. тупо не усечься.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025537
Rex12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
L_argo
Но может просто не дать никакого эффекта, т.е. тупо не усечься.

Если будет какая-то транзакция в этот момент запущена?
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025566
4es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4es
Гость
Rex12
L_argo
Но может просто не дать никакого эффекта, т.е. тупо не усечься.

Если будет какая-то транзакция в этот момент запущена?

Если vlf'ы в конце лога пока ещё активны по какой-то причине. Активная транзакция, бекап лога не прошел ещё, log reader при включенной репликации не прочитал ещё лог, AlwaysOn не передал весь лог на вторичные ноды, ну и всё в таком духе.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025627
Rex12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4es
Если vlf'ы в конце лога пока ещё активны по какой-то причине. Активная транзакция, бекап лога не прошел ещё, log reader при включенной репликации не прочитал ещё лог, AlwaysOn не передал весь лог на вторичные ноды, ну и всё в таком духе.

Иными словами, для безопасности лучше сделать так, чтобы пользователи в это время не имели доступа к базе?
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025640
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rex12
4es
Если vlf'ы в конце лога пока ещё активны по какой-то причине. Активная транзакция, бекап лога не прошел ещё, log reader при включенной репликации не прочитал ещё лог, AlwaysOn не передал весь лог на вторичные ноды, ну и всё в таком духе.

Иными словами, для безопасности лучше сделать так, чтобы пользователи в это время не имели доступа к базе?

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

А с какой целью проводятся эти самые периодические усечения журнала транзакций?
Такие операции не должны быть на еженощной основе, т.к. в этом случае это мартышкин сизифов труд.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025654
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex

А с какой целью проводятся эти самые периодические усечения журнала транзакций?
Такие операции не должны быть на еженощной основе, т.к. в этом случае это мартышкин сизифов труд.

автору всё не дают покоя журналы
https://www.sql.ru/forum/1331488/obrezanie-zht-v-kontekste-plana-obsluzhivaniya
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025707
Rex12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex
А с какой целью проводятся эти самые периодические усечения журнала транзакций?

Только ради экономии места.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025709
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rex12
msLex
А с какой целью проводятся эти самые периодические усечения журнала транзакций?

Только ради экономии места.

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

Я и говорю
msLex
это мартышкин сизифов труд
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025743
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем более, что увеличивается фрагментация дискового пространства.
Rex12
msLex
А с какой целью проводятся эти самые периодические усечения журнала транзакций?

Только ради экономии места.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025812
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rex12
msLex
А с какой целью проводятся эти самые периодические усечения журнала транзакций?

Только ради экономии места.


Так усечение или сжатие?
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025952
Rex12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
Так усечение или сжатие?

Усечение
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40025997
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rex12,

Вам уже объяснили всю суть борьбы с ветряными мельницами.

Ваша борьба с постоянно растущим фалом лога:
а) вредна
б) бесмыссленна

Усекать лог имеет смысл только когда фактор роста файла имеет явно разовый характер. (к примеру обычно размер файла ~50 гигабайт и вы с какой то день приходите а у вас не 50 а 250 гигов отожрало, ночная масовая загрузка какого нибудь большого справочника была или индексы все в базе горе админ решил перестроить)

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

А так у вас получается следующая ситуация (гипотетически я сейчас пофантазирую, диск у вас на котором лог 200 Гб):
За неделю работы лог у вас вырастает к примеру до 100 Гб.
В конце недели вы его режете до 1 Гб, и всю следующую неделю он опять набирает весь свой необходимый объем (тратя между прочим ресурсы на расширение файла)
Представьте картину что к примеру кто нибудь положит файл объемом 160 Гб в течении недели. в таком случае у вас будет ситуация когда необходимое дальнейшее свободное место для роста лога будет занято и в конце недели вы получите не базу с логом в 100 Гб, а базу в состоянии read only.
что лучше нерабочая база или невозможность занять какой то дисковый объем посторонней операцией?

Бороться с ростом лога нужно не усечением, а изменением стратегии резервного копирования. Видите что растет лог? - чаще делайте бэкапы.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026072
Rex12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff
Видите что растет лог? - чаще делайте бэкапы.

Спасибо, Феликс!
Но бэкапы делаются каждую ночь (полные). Каждый час в основное рабочее время - бэкап ЖТ. И ещё каждую ночь производится перестроение индекса, что и вызывает рост файла ЖТ,
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026090
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rex12,

Я бы на Вашем месте начал с поиска закономерностей роста лога. поснимал бы счетчики производительности на отрезке времени и посмотрел какая нагрузка вызывает рост лога.

Если это операции обслуживания бд, опять таки надо задаться вопросом о необходимости настолько частого перестроения, возможен вариант что полезного выхлопа это дает относительно мало, а базу и сервер вы гоняете и в хвост и в гриву из-за этого.

Просто брать и рубить с плеча может каждый, правда иногда администраторы не задаются при этом мыслью о таком ресурсе как срок службы физического железа и что определенные действия как раз сильно сокращают этот показатель, а когда подходит момент что целая полка с дорогостоящими SSD РАЗОМ умирает, начинаются вот эти вот "ой!"
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026268
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rex12,

при усечении не происходит никаких изменений для пользователя и физические размеры файлов не изменяются.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026280
Rex12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff
опять таки надо задаться вопросом о необходимости настолько частого перестроения

А как часто надо проводить такие перестроения? Достаточно ли будет делать это раз в неделю?
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026483
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А как часто надо проводить такие перестроения?
Когда вы сможете замерить вред от фрагментации.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026495
Rex12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257
>Когда вы сможете замерить вред от фрагментации.

А каковы критерии этого вреда?
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026515
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rex12,

а после перестроения вы не делаете бэкап журнала? После выполнения бэкапа происходит автоматическое усечение, т.е.. освобождение VLF, ничего предпринимать больше не надо. При следующей переиндексации файл не будет расти.

Фраза "мне периодически приходится производить усечение ЖТ" говорит о том, что вы под "усечением" можете понимать "сжатие" и путаете эти понятия. Так вот сжатие выполнять не надо, если поступившие записи в журнал своевременно переносятся в резервную копию. Если у вас выполняются какие-то разовые, нерегулярные задачи, которые приводят к увеличению файлов, тогда надо ограничить рост файлов с той целью, что "падение" операции не должно приводить к исчерпанию дискового пространства. Падение сервера и других приложений из-за нехватки диска - большее зло, чем откат транзакции по завершению места в журнале или базе.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026523
Rex12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
а после перестроения вы не делаете бэкап журнала?

Делаю. И именно после перестроения файл ЖТ становится становится по размеру сравним с файлом данных.

Фраза "мне периодически приходится производить усечение ЖТ" говорит о том, что вы под "усечением" можете понимать "сжатие" и путаете эти понятия.
Насколько я понимаю, вот этот скрипт делает именно усечение: DBCC SHRINKFILE (upp_log, 12)
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026526
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А каковы критерии этого вреда?
Внутренняя фрагментация - страницы не полные либо в результате удалений, либо в результате разбиений при переполнении. Итог лишние логические чтения (надо прочитать больше страниц для тех же строк).
Кстати проверьте у вас fill factor стоит на нуле (или 100%), потому как если нет, то вы эту самую внутреннюю фрагментацию себе организуете.

Внешняя фрагментация - в старые добрые времена когда деревья были большими а диски были реальными железными дисками то непоследовательность страниц приводила к лишним логическим чтениям. В новые злые времена в дисках уже ничего не крутится, а сами они чисто логическое понятие и что где крутится ведает только аллах или контроллер SAN

Итого - если вы не можете замерить улучшение производительности после перестроений то зачем ее делать вообще.
...
Рейтинг: 0 / 0
Состояние БД при усечении ЖТ
    #40026751
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rex12,

DBCC SHRINKFILE - это СЖАТИЕ. Если вы прибегаете к сжатию, то "что-то пошло не так" и ваши процессы настроены неверно.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Состояние БД при усечении ЖТ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]