Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
KellyLynch
Member

Откуда:
Сообщений: 94
Может ли кто-то пояснить вот по такой ситуации: есть база данных на SQL Server 2012. Один из её файлов данных имел размер 1.33 TB. На базе последовательно выполнили две такие операции:

Операция 1: DBCC SHRINKFILE ('TheFileName’) . В результате чего размер файла уменьшился с 1.33 TB до 1.13TB.
Операция 2: Запустили несколько команд ALTER INDEX REBUILD ONLINE = ON для кластерных индексов нескольких больших таблиц, находящихся в этом файле базы.
В результате чего размер файла опять увеличился уменьшился до примерно такого же размера, какой и был до DBCC SHRINKFILE ('TheFileName’).

Это что – “ожидаемое последствие INDEX REBUILD”? Я не знал, что INDEX REBUILD может вызвать увеличение размера файла данных базы.
10 ноя 20, 13:44    [22229535]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
komrad
Member

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

ну так в режиме онлайн была построена копия таблицы
файл вырос
теперь в нем снова много места от старых таблиц

shrinkfile и rebuild это операции с противоположным эффектом в части размера файлов

shrinkfile безобидна только случае использования опции truncateonly
10 ноя 20, 13:49    [22229542]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31602
KellyLynch
Операция 1: DBCC SHRINKFILE ('TheFileName’) . В результате чего размер файла уменьшился с 1.33 TB до 1.13TB.
И зачем портить базу ради 20% размера файла? Я понимаю, с 1.33 TB до 1.13ГB...
10 ноя 20, 18:15    [22229741]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34241
Блог
еще тут на форуме писали, что при онлайновом перестроении сам индекс еще растет (+несколько байт на каждую запись)
10 ноя 20, 19:29    [22229773]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
Ennor Tiegael
Member

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

Если RCSI на базе включен, то 14 байт на строку - было дело. Забавно, что в доке к 2005 это багом еще не считалось, было вполне себе документированное поведение.
10 ноя 20, 21:00    [22229805]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
KellyLynch
Member

Откуда:
Сообщений: 94
alexeyvg
KellyLynch
Операция 1: DBCC SHRINKFILE ('TheFileName’) . В результате чего размер файла уменьшился с 1.33 TB до 1.13TB.
И зачем портить базу ради 20% размера файла? Я понимаю, с 1.33 TB до 1.13ГB...


"И зачем портить..." - сам не знаю ; мне сейчас приходится разгребать то что наделали другие.

Тогда такой вопрос: я вижу в базе ещё один файл; в нём индексы хранятся. Этот файл недавно сжали в 2 раза: с 1 TB до 500 GB.
Microsoft предупреждает что …A shrink operation doesn't preserve the fragmentation state of indexes in the database, and generally increases fragmentation to a degree….”.

Значит, в результате этого Shrink-а фрагментация "увеличилась".
Как по-Вашему, каковы должны быть дальнейшие действия с этим файлом? Я уже вижу что ALTER INDEX REBUILD запускать опасно - этот запуск может опять увеличить файл до прежнего размера. Но ведь с "возросшей фрагментацией" надо что-то делать...
11 ноя 20, 14:12    [22230133]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
KellyLynch
Member

Откуда:
Сообщений: 94
komrad
KellyLynch,

ну так в режиме онлайн была построена копия таблицы
файл вырос
теперь в нем снова много места от старых таблиц

shrinkfile и rebuild это операции с противоположным эффектом в части размера файлов

shrinkfile безобидна только случае использования опции truncateonly


Тогда такой вопрос: я вижу в базе ещё один файл; в нём индексы хранятся. Этот файл недавно сжали в 2 раза: с 1 TB до 500 GB.
Microsoft предупреждает что …A shrink operation doesn't preserve the fragmentation state of indexes in the database, and generally increases fragmentation to a degree….”.

Значит, в результате этого Shrink-а фрагментация "увеличилась".
Как по-Вашему, каковы должны быть дальнейшие действия с этим файлом? Я уже вижу что ALTER INDEX REBUILD запускать опасно - этот запуск может опять увеличить файл до прежнего размера. Но ведь с "возросшей фрагментацией" надо что-то делать...
11 ноя 20, 14:12    [22230134]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
KellyLynch,
В том, что в файле есть свободное место, нет ничего"опасного".
Напротив, если файл данных забит до предела - вот это плохо:
  • в случае роста объема данных, серверу придется расширять файл, что приведет к задержкам в этот момент
  • операция роста может столкнуться с отсутствием места на диске.

Задача DBA - напротив поддерживать какой-то % свободного места в файлах. И как раз перестроение индексов это прекрасно делает.
11 ноя 20, 14:31    [22230139]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1590
KellyLynch,

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

У вас в данный момент наблюдается какая то реальная проблема которую надо решить?
Или все эти манипуляции от доброты душевной?
11 ноя 20, 14:32    [22230142]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
aleks222
Member

Откуда:
Сообщений: 1086
KellyLynch
komrad
KellyLynch,

ну так в режиме онлайн была построена копия таблицы
файл вырос
теперь в нем снова много места от старых таблиц

shrinkfile и rebuild это операции с противоположным эффектом в части размера файлов

shrinkfile безобидна только случае использования опции truncateonly


Тогда такой вопрос: я вижу в базе ещё один файл; в нём индексы хранятся. Этот файл недавно сжали в 2 раза: с 1 TB до 500 GB.
Microsoft предупреждает что …A shrink operation doesn't preserve the fragmentation state of indexes in the database, and generally increases fragmentation to a degree….”.

Значит, в результате этого Shrink-а фрагментация "увеличилась".
Как по-Вашему, каковы должны быть дальнейшие действия с этим файлом? Я уже вижу что ALTER INDEX REBUILD запускать опасно - этот запуск может опять увеличить файл до прежнего размера. Но ведь с "возросшей фрагментацией" надо что-то делать...


Имитация бурной деятельности.
11 ноя 20, 14:41    [22230150]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31602
KellyLynch
"И зачем портить..." - сам не знаю ; мне сейчас приходится разгребать то что наделали другие.
А, в смысле, это другие делают шринки и ребилды?

Если свободное место не во много раз больше занятого, то запретите им делать шринки.

KellyLynch
Значит, в результате этого Shrink-а фрагментация "увеличилась".
Как по-Вашему, каковы должны быть дальнейшие действия с этим файлом?
Вам нужно выбрать, либо незанятое место в файле, либо фрагментацию.
11 ноя 20, 15:03    [22230170]     Ответить | Цитировать Сообщить модератору
 Re: Увеличение размера файла базы после ALTER INDEX REBUILD ONLINE = ON  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34241
Блог
alexeyvg
Если свободное место не во много раз больше занятого, то запретите им делать шринки


+1
а вот если у вас база весит 1-2 Тб, а внутри занято 20Гб, то нужно шринкать
11 ноя 20, 16:44    [22230258]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить