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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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