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

Откуда: Москва
Сообщений: 2635
можно ли делать SHRINKFILE во время работы пользователей?
DBCC SHRINKFILE (N'base_log' , 0, TRUNCATEONLY)

(а потом сразу full бэкап)
12 авг 19, 10:35    [21946864]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28894
trew
можно ли делать SHRINKFILE во время работы пользователей?
Да.
Но лучше его никогда не делать, а тем более автоматически по расписанию.
12 авг 19, 10:50    [21946875]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
trew
Member

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

Спасибо, понятно.
Место на диске мало. Вот и хочу привести файлы логов в маленькие размеры. (бэкап лога делается)
12 авг 19, 10:57    [21946884]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
trew
Member

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

Сейчас и базы и бэкапы на одном диске))
Временно.
12 авг 19, 10:58    [21946886]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Владислав Колосов
Member

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

как Вам поможет шринкфайл, если размер базы завтра снова увеличится? Или оптимизируйте зранение путем нормализации данных или докупайте диски.
12 авг 19, 11:26    [21946930]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Владислав Колосов
Member

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

...

Единственное прямое назначение SHRINKFILE - это подготовка базы к резервному копированию с целью долговременного хранения или транспортировки.
12 авг 19, 11:28    [21946931]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1011
Владислав Колосов
trew,

...

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

Это прям очень смелое заявление.
А как же такое?
DBCC SHRINKFILE (file, EMPTYFILE);

Это какое-то кривое назначение?

Ну и еще есть рекомендации сжатия журнала транзакций для снижения фрагментации VLF'ов, например, здесь: https://www.sqlskills.com/blogs/kimberly/8-steps-to-better-transaction-log-throughput/
12 авг 19, 12:07    [21946999]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 264
trew,

Конечно, если совсем приперло, и другой опции нет - то да, можно шринкать файлы в фоне обычной работы пользователей с базой. Но, надо учесть, что:
- Могут быть сильные просадки в подсистеме I/O - экстенты грузятся с диска в память, ожидания типа PAGEIOLATCH_SH
- низкоуровневые лэтчи на объекты БД
- Задача DBCC SHRINK%object% - это прибрать по максимуму все пустые области, размеченные внутри файлов логов/данных, - поэтому он не заботится о всем том, что происходит наверху, на уровне логики, и что старательно причёсывает процесс работы с индексами, посему физический порядок страниц может быть хаотичен, как следствие - замедленные операции чтения/вставки в этом хаосе - индексные последовательности могут оказаться физически разбросаны по диску, со всеми понятными вытекающими.
Желательно сразу же сделать ребилд индексом после шринка

А вообще - лучше делать шринк, взяв БД в монопольный доступ - ALTER DATABASE SET SINGLE USER
Так же учесть, что если БД состоит из нескольких файлов, и есть желание шринкануть их всех - то эта операция последовательная, а не параллельная
12 авг 19, 14:41    [21947202]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Владислав Колосов
Member

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

А миграцию в файлах в каких случаях производят? По-моему как раз в случае переезда на новый носитель. Вторая же рассмотренная ситуация - это удачное применение побочного эффекта. Устраивать же регулярный "баян", который любят рекомендовать не особо понимающие не особо понимающим на просторах инета - гораздо хуже, чем не знать о полезных качествах сжатия в _особых_ ситуациях. Просто моё мнение.
12 авг 19, 15:07    [21947232]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 32003
Блог
Владислав Колосов
Единственное прямое назначение SHRINKFILE - это подготовка базы к резервному копированию с целью долговременного хранения или транспортировки.


неверно,

например, есть база 24/7 в несколько Тб, в результате чего-то-там (например, изменение архитектуры) реально оттуда используется, скажем, всего 1-2 Тб...
12 авг 19, 15:55    [21947301]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 32003
Блог
ну и при резервном копировании это неиспользуемое пространство не влияет на объем бэкапа
12 авг 19, 15:57    [21947302]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6639
Критик,

то есть для изменения архитектуры специально единовременно расширяют хранилище? А если второй раз придется изменить архитектуру, что делать с существующими файлами на дисках, перемещать? Не слишком ли накладно, если крупные релизы происходят раз в 2-3 месяца?
12 авг 19, 16:32    [21947352]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
aleks222
Member

Откуда:
Сообщений: 712
Критик
ну и при резервном копировании это неиспользуемое пространство не влияет на объем бэкапа

Влияет.
Страница пишется в бякап целиком, независимо от заполнения.
Не пишутся только свободные страницы.
12 авг 19, 16:42    [21947364]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
msLex
Member

Откуда:
Сообщений: 6387
Критик
ну и при резервном копировании это неиспользуемое пространство не влияет на объем бэкапа

зато оно влияет на размер файлов данных/лога при восстановлении

а отсюда возникает как минимум две проблемы

1. Если нужно развернуть на каком-то другом железе, требования по свободному месту выше
2. При ресторе FULL бекапа, файл лога нужно "забить нулями", ну т.е. физически перезаписать. Следовательно, чем больше файл лога, тем дольше время восстановления.
12 авг 19, 16:46    [21947368]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
msLex
Member

Откуда:
Сообщений: 6387
aleks222
Влияет.
Страница пишется в бякап целиком, независимо от заполнения.
Не пишутся только свободные страницы.

шринк не меняет заполненность страниц, в худшем (или лучшем) случае перемешает страницы и "хвоста" файла в начало.
12 авг 19, 16:49    [21947371]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 32003
Блог
Владислав Колосов
Критик,

то есть для изменения архитектуры специально единовременно расширяют хранилище? А если второй раз придется изменить архитектуру, что делать с существующими файлами на дисках, перемещать? Не слишком ли накладно, если крупные релизы происходят раз в 2-3 месяца?


Зачем что-то расширять? Например, часть функционала уехала в совсем другую базу. Или перешли от подневных остатков к хранению проводок и т.д. В результате неиспользованное пространство занимает столько, насколько база не вырастет за несколько лет. И эта база периодически восстанавливается на дев/тест.
12 авг 19, 18:38    [21947472]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Yasha123
Member

Откуда:
Сообщений: 1407
Критик
ну и при резервном копировании это неиспользуемое пространство не влияет на объем бэкапа

во-первых, автор шринкает лог.
а во-вторых, может быть интересен не размер бэкапа,
а размер отресторенной базы,
и если у базы терабайтный лог, как у Гавриленко,
отресторенная база, мягко говоря, не везде влезет.
а может ее несут девелоперам на сервер с небольшим диском,
да и ждать зануление терабайта не всем хочется.
-------
файлы данных тоже, бывает, надо шринкать.
на новом месте товарищи хранили файлы как на диске, так и в таблице,
т.е. было дублирование.
приняли решение хранить файлы только на диске.
в таблицу вместо файлов занесли налл.
места высвободилось 9/10 всего объема базы.
и да, шринканули базу,
ибо таскать за собой на девелоперский сервер тучу пустого места никому не надо.
а ресторим часто.
13 авг 19, 14:20    [21948139]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2281
Владислав Колосов
trew,

...

Единственное прямое назначение SHRINKFILE - это подготовка базы к резервному копированию с целью долговременного хранения или транспортировки.
13 авг 19, 22:30    [21948665]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
uaggster
Member

Откуда:
Сообщений: 676
Да тупо разработчики понаменяли в таблицах всякого, так что от таблиц - только названия остались.
Тогда Alter table rebuild по всей базе + DBCC SHRINKFILE.
У меня так один раз база из 2,5 Тб в 400 Гб превратилась.
... влезла целиком на ССД и новый сервер из плана по закупкам плавно переместился в светлое будущее.
14 авг 19, 09:36    [21948832]     Ответить | Цитировать Сообщить модератору
 Re: можно ли делать SHRINKFILE во время работы пользователей  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 32003
Блог
uaggster
... влезла целиком на ССД и новый сервер из плана по закупкам плавно переместился в светлое будущее.


вот неумные люди, нужно было сначала закупить, а потом оптимизировать :)
14 авг 19, 18:07    [21949527]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить