Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обрезание ЖТ в контексте Плана обслуживания / 22 сообщений из 22, страница 1 из 1
04.12.2020, 12:14
    #40024524
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Друзья, у меня есть План обслуживания, в контексте которого предполагается обрезание ЖТ. Необходимость обрезания продиктована тем, что после перестроения индекса файл ЖТ вырастает до размеров, сопоставимых с размером файла данных (133Гб и 104Гб).
...
Рейтинг: 0 / 0
04.12.2020, 12:22
    #40024529
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Инструкция T-SQL выглядит следующим образом:

USE UPP_test_3
GO
ALTER DATABASE UPP_test_3 SET RESTRICTED_USER
GO
ALTER DATABASE UPP_test_3 SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE (upp_log, 12)
GO
ALTER DATABASE UPP_test_3 SET RECOVERY FULL
GO
ALTER DATABASE UPP_test_3 SET MULTI_USER
GO

Сама по себе она отлично срабатывает. Но в составе Плана обслуживания стопорится на строке SET RESTRICTED_USER.
...
Рейтинг: 0 / 0
04.12.2020, 12:23
    #40024531
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Вопрос - почему скрипт не работает в составе Плана обслуживания?
...
Рейтинг: 0 / 0
04.12.2020, 12:24
    #40024532
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Rex12,

Касательно обрезания - зачем обрезать, если он при реиндексе снова отрастёт? Этим вы только замедляете процесс реиндекса.
...
Рейтинг: 0 / 0
04.12.2020, 12:26
    #40024534
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Rex12
Инструкция T-SQL выглядит следующим образом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
USE UPP_test_3
GO
ALTER DATABASE UPP_test_3 SET RESTRICTED_USER
GO
ALTER DATABASE UPP_test_3 SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE (upp_log, 12)
GO
ALTER DATABASE UPP_test_3 SET RECOVERY FULL
GO
ALTER DATABASE UPP_test_3 SET MULTI_USER
GO


Сама по себе она отлично срабатывает. Но в составе Плана обслуживания стопорится на строке SET RESTRICTED_USER.


зачем это всё делать?
особенно переключение full->simple->full?

если уж необходимо лог обрезать, то делайте так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
USE UPP_test_3
GO
/*
ALTER DATABASE UPP_test_3 SET RESTRICTED_USER
GO
ALTER DATABASE UPP_test_3 SET RECOVERY SIMPLE
GO
*/
DBCC SHRINKFILE (upp_log, 12)
GO
/*
ALTER DATABASE UPP_test_3 SET RECOVERY FULL
GO
ALTER DATABASE UPP_test_3 SET MULTI_USER
GO
*/
...
Рейтинг: 0 / 0
04.12.2020, 12:30
    #40024535
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
komrad
Касательно обрезания - зачем обрезать, если он при реиндексе снова отрастёт?

В том-то и дело! Поэтому обрезание предполагается делать каждую ночь.
...
Рейтинг: 0 / 0
04.12.2020, 12:32
    #40024536
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
komrad
зачем это всё делать? особенно переключение full->simple->full?


В режиме FULL обрезание ЖТ НЕВОЗМОЖНО.
...
Рейтинг: 0 / 0
04.12.2020, 12:40
    #40024542
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Rex12

В режиме FULL обрезание ЖТ НЕВОЗМОЖНО.

капслок повеселил :)

В режиме full обрезание лога возможно после log backup.

Посмотрите команду dbcc loginfo() и колонку Status - когда там 2, этот vlf занят, а когда 0 - он пустой.
Обрезаются пустые vlf с конца.
...
Рейтинг: 0 / 0
04.12.2020, 12:41
    #40024544
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Rex12
komrad
Касательно обрезания - зачем обрезать, если он при реиндексе снова отрастёт?

В том-то и дело! Поэтому обрезание предполагается делать каждую ночь.

не уловил логику
поясните?
...
Рейтинг: 0 / 0
04.12.2020, 12:48
    #40024551
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
komrad
В режиме full обрезание лога возможно после log backup.

Спасибо за подсказку! Сейчас проверю на тестовой базе.

Но тогда по-любому нужно базу переводить в RESTRICTED_USER, потому что ночью пользователи тоже работают. И могут совершить транзакции во время обрезания лога.
...
Рейтинг: 0 / 0
04.12.2020, 12:50
    #40024552
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Rex12
komrad
В режиме full обрезание лога возможно после log backup.

Спасибо за подсказку! Сейчас проверю на тестовой базе.

Но тогда по-любому нужно базу переводить в RESTRICTED_USER, потому что ночью пользователи тоже работают. И могут совершить транзакции во время обрезания лога.

Restricted_user не нужен
обрезается только пустая часть лога

так поясните, зачем вы обрезаете лог?
какая причина (кроме "страшного" размера)?
...
Рейтинг: 0 / 0
04.12.2020, 12:53
    #40024557
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
komrad
не уловил логику поясните?

С удовольствием!

Ежедневное ночное перестроение индекса раздувает файл ЖТ. Поэтому логично его обрезать не отходя от кассы в рамках этого же плана обслуживания. Утром приходит на работу основная часть пользователей, журнал уже обрезан. И сильно не растёт до момента выполнения ночного Плана обслуживания. И так по кругу.
...
Рейтинг: 0 / 0
04.12.2020, 12:55
    #40024560
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
komrad
так поясните, зачем вы обрезаете лог? какая причина (кроме "страшного" размера)?

Это основная причина. На сервере мало места, однако :-)
...
Рейтинг: 0 / 0
04.12.2020, 12:58
    #40024563
4es
4es
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Rex12
komrad
не уловил логику поясните?

С удовольствием!

Ежедневное ночное перестроение индекса раздувает файл ЖТ. Поэтому логично его обрезать не отходя от кассы в рамках этого же плана обслуживания. Утром приходит на работу основная часть пользователей, журнал уже обрезан. И сильно не растёт до момента выполнения ночного Плана обслуживания. И так по кругу.

Так он у вас ночью всё равно вырастет. Зачем насиловать его туда-сюда?
Тем более не понятно, зачем вам вообще Full recovery model, если, по всей видимости, бекапы лога вы не делаете. А если и делаете, то после перевода в Simple цепочка рушится и становится бесполезной.
Если БД будет в Simple модели, после завершения реиндекса место в логе освободится для переиспользования. Да, файл останется того же размера, но внутри будет куча места для работы.
Либо, как уже написали, делать бекапы лога и не трогать recovery model, оставив её в Full.
...
Рейтинг: 0 / 0
04.12.2020, 13:05
    #40024568
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Rex12
komrad
не уловил логику поясните?

С удовольствием!

Ежедневное ночное перестроение индекса раздувает файл ЖТ. Поэтому логично его обрезать не отходя от кассы в рамках этого же плана обслуживания. Утром приходит на работу основная часть пользователей, журнал уже обрезан. И сильно не растёт до момента выполнения ночного Плана обслуживания. И так по кругу.


Еще раз: зачем его обрезать, если он 1) отрастает в течение дня, 2) отрастает ночью при перестройке индекса?
Для чего делать эту бесполезную и вредную работу?

Вредна он тем, что на время прироста лога и пользователи, и план обслуживания ждут окончания процесса прироста. То есть, получают искусственную задержку.
...
Рейтинг: 0 / 0
04.12.2020, 13:06
    #40024569
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
4es
зачем вам вообще Full recovery model, если, по всей видимости, бекапы лога вы не делаете.

Делаю, это критически важно.
А если и делаете, то после перевода в Simple цепочка рушится и становится бесполезной.
Дело в том, что после обрезания ЖТ и перевода БД в режим FULL делается полный бэкап, и образуется новая цепочка.
...
Рейтинг: 0 / 0
04.12.2020, 13:11
    #40024572
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Rex12
komrad
так поясните, зачем вы обрезаете лог? какая причина (кроме "страшного" размера)?

Это основная причина. На сервере мало места, однако :-)

вот! с этого и надо было начинать.

посмотрите решение по реиндексу и обновлению статистики от Ola Hallengren
у меня сильное подозрение, что ваш план обслуживания "перелопачивает" больше чем нужно
уменьшите объем работ - уменьшите и прирост лога

https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html
...
Рейтинг: 0 / 0
04.12.2020, 13:11
    #40024573
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
komrad
Еще раз: зачем его обрезать, если он 1) отрастает в течение дня, 2) отрастает ночью при перестройке индекса? Для чего делать эту бесполезную и вредную работу?

Только ради свободного места на диске.
Вредна она тем, что на время прироста лога и пользователи, и план обслуживания ждут окончания процесса прироста. То есть, получают искусственную задержку.
Основной прирост происходит ночью, когда количество пользователей минимально.
Иными словами, вы вообще не рекомендуете трогать ЖТ?
...
Рейтинг: 0 / 0
04.12.2020, 13:31
    #40024580
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
Rex12
komrad
Еще раз: зачем его обрезать, если он 1) отрастает в течение дня, 2) отрастает ночью при перестройке индекса? Для чего делать эту бесполезную и вредную работу?

Только ради свободного места на диске.

Место ради места? чтобы глаз радовало или оно нужно для других приложений/процессов?
В текущей конфигурации вашего джоба это место нужно логу.

Rex12

Вредна она тем, что на время прироста лога и пользователи, и план обслуживания ждут окончания процесса прироста. То есть, получают искусственную задержку.

Основной прирост происходит ночью, когда количество пользователей минимально.
Иными словами, вы вообще не рекомендуете трогать ЖТ?
рекомендую:
1) оставить его в покое
2) проанализировать кол-во VLF в нем и, при необходимости, уменьшить кол-во путем укрупнения VLF. Это ускорит recovery базы при старте сиквела и при восстановлении базы.


У вас дисковая подсистема на каких дисках? SSD?
...
Рейтинг: 0 / 0
04.12.2020, 13:40
    #40024584
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
komrad
У вас дисковая подсистема на каких дисках? SSD?

На обычных, не SSD.
...
Рейтинг: 0 / 0
04.12.2020, 13:41
    #40024585
Rex12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
komrad
рекомендую:
1) оставить его в покое
2) проанализировать кол-во VLF в нем и, при необходимости, уменьшить кол-во путем укрупнения VLF. Это ускорит recovery базы при старте сиквела и при восстановлении базы.

Спасибо!
...
Рейтинг: 0 / 0
04.12.2020, 17:10
    #40024696
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание ЖТ в контексте Плана обслуживания
авторЕжедневное ночное перестроение индекса раздувает файл ЖТ.Чисто ради эксперимента - не делайте этого день другой.
И если не увидите разницу, то зачем платить больше.
Если же у вас зуд что-то делать - делайте CHECKDB, перебирайте статистику, и делайте бакап логов чаще. Все теме же скриптами от Ola
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обрезание ЖТ в контексте Плана обслуживания / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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