powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
31 сообщений из 31, показаны все 2 страниц
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864446
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добры день.
Поделитесь мыслями и советами по следующей задаче.
Есть база общим объемом 8Тб, состоит из двух файловых групп, файлы в группе весом по 1Тб Autogrowth - none.
В БД нонстоп заливаются и удаляются данные.
Требуется уменьшить размер файлов данных одной из групп (которая принимает на себя основную нагрузку тк лежит на ssd дисках) на 50Гб. Available free space для каждого файла в группе более 50Гб.

Есть ли способы минимизировать блокировки, не знаю, ускорением шринка грубо говоря?

Microsoft SQL Server 2014 (SP2-CU1) (KB3178925) - 12.0.5511.0 (X64) Aug 19 2016 14:32:30 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864456
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

попробуйте шринковать маленькими порциями, по X Мб.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864459
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_ч_teCa,

попробуйте шринковать маленькими порциями, по X Мб.

Была такая мысль, не был уверен, что это ускорило бы шринк, нужно потестировать.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864465
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это никак не ускорит.
все будет ровно то же, только еще + он вначале информацию собирает,
и эта часть будет повторена много раз.
мне пришлось прерывать шринк, когда юзеры тормозились,
и он каждый раз начинал с начала.
до сделанного уже процента percent_complete бежит очень быстро,
потом доходит до места, где прервался в последний раз, и начинаются тормоза.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864471
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123это никак не ускорит.
все будет ровно то же, только еще + он вначале информацию собирает,
и эта часть будет повторена много раз.
мне пришлось прерывать шринк, когда юзеры тормозились,
и он каждый раз начинал с начала.
до сделанного уже процента percent_complete бежит очень быстро,
потом доходит до места, где прервался в последний раз, и начинаются тормоза.

Я примерно так же представлял эту логику.

А если использовать TRUNCATEONLY, как я понимаю, если я указываю filesize, то при выполнении DBCC SHRINKFILE данные будут перестраиваться (и не факт, что шринк удастся, если перемещаемые данные используются другим процессом), как понимаю при использовании TRUNCATEONLY, данные не перестраиваются, а освобождается место занятое пустыми страницами, что казалось бы должно выполнится быстрее и не создавать конфликты с заполненными страницами.

Как думаете?
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864475
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCaYasha123это никак не ускорит.
все будет ровно то же, только еще + он вначале информацию собирает,
и эта часть будет повторена много раз.
мне пришлось прерывать шринк, когда юзеры тормозились,
и он каждый раз начинал с начала.
до сделанного уже процента percent_complete бежит очень быстро,
потом доходит до места, где прервался в последний раз, и начинаются тормоза.

Я примерно так же представлял эту логику.

А если использовать TRUNCATEONLY, как я понимаю, если я указываю filesize, то при выполнении DBCC SHRINKFILE данные будут перестраиваться (и не факт, что шринк удастся, если перемещаемые данные используются другим процессом), как понимаю при использовании TRUNCATEONLY, данные не перестраиваются, а освобождается место занятое пустыми страницами, что казалось бы должно выполнится быстрее и не создавать конфликты с заполненными страницами.

Как думаете?
ну если всё свободное место в конце, иначе как
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864486
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня с TRUNCATEONLY ничего не высвободилось.
что логично, т.к. то, что тут массово удалили,
было как раз древнее либо повторяющееся.
если у вас просто пустое место в конце,
(например, потому что приращение 100Гб,
и даже когда мегабайта не хватило,
такой кусок сразу прирастился),
то может и повезет.
пробуйте, с TRUNCATEONLY ответ почти моментальный
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864489
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123это никак не ускорит.
все будет ровно то же, только еще + он вначале информацию собирает,
и эта часть будет повторена много раз.
мне пришлось прерывать шринк, когда юзеры тормозились,
и он каждый раз начинал с начала.
до сделанного уже процента percent_complete бежит очень быстро,
потом доходит до места, где прервался в последний раз, и начинаются тормоза.

Мне казалось, что это должно уменьшить время блокировок.
Можно попробовать радикальный способ:
https://www.sqlskills.com/blogs/paul/why-you-should-not-shrink-your-data-files/
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864495
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_ч_Мне казалось, что это должно уменьшить время блокировок.

с чего бы это.
он же за раз всего пару страниц блокирует:
ту, что перемещает, и ту, куда перемещает.
там даже дело не в блокировке,
шрик поднимает в память тучу никому не нужного,
если у вас и без того низкое PLE, юзеры сразу заметят
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864504
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_ч_Можно попробовать радикальный способ:
https://www.sqlskills.com/blogs/paul/why-you-should-not-shrink-your-data-files/
Код: sql
1.
CREATE INDEX … WITH (DROP_EXISTING = ON) ON 


вообще не вариант.
вы своим одним переносимым индексом
вообще всю таблицу блокируете.
а онлайново даже лучше и не пытаться,
из-за каких-то 50Гб на терабайтной базе вы в лог запишете пару терабайт
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864506
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123с чего бы это.
он же за раз всего пару страниц блокирует:
ту, что перемещает, и ту, куда перемещает.
там даже дело не в блокировке,
шрик поднимает в память тучу никому не нужного,
если у вас и без того низкое PLE, юзеры сразу заметят

а как же страницы "слева/справа/сверху" в B-tree?
в них же ссылки менять надо.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864518
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexYasha123с чего бы это.
он же за раз всего пару страниц блокирует:
ту, что перемещает, и ту, куда перемещает.
там даже дело не в блокировке,
шрик поднимает в память тучу никому не нужного,
если у вас и без того низкое PLE, юзеры сразу заметят

а как же страницы "слева/справа/сверху" в B-tree?
в них же ссылки менять надо.
ок,
это было фигурально.
пускай будут 10 страниц в произвольный момент времени
в худшем случае, согласны?

но сколько блокируется за раз на шринке с параметром n,
столько же будет блокироваться за раз при шринке с параметром 100n.
в этом был смысл моего ответа.

а вот зато перенос индекса в новую ФГ это блокировка всей таблицы целиком.
и онлайново это тоже не только лог засрать, там чтобы получить Sch-M,
придется в очереди постоять, а пока стоишь в очереди за Sch-M,
накопишь целый паровоз из жаждущих Sch-S и IS
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864521
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@msLexmsLex,
а вы здесь?
хочу запостить вопрос про план,
и чтобы не на dba.stackexchange
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864522
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в случае с TRUNCATEONLY, в данном случае чем шринк вызывает блокировку? В момент сбора информации о страницах? Вроде бы данные он никуда не перемещает.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864557
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123ок,
это было фигурально.
пускай будут 10 страниц в произвольный момент времени
в худшем случае, согласны?

но сколько блокируется за раз на шринке с параметром n,
столько же будет блокироваться за раз при шринке с параметром 100n.
в этом был смысл моего ответа.


Да, конечно.

Я просто немного позанудствовал, а заодно уточнил.
Может там какие оптимизации придумал, о которых я не в курсе.

Yasha123а вот зато перенос индекса в новую ФГ это блокировка всей таблицы целиком.
и онлайново это тоже не только лог засрать, там чтобы получить Sch-M,
придется в очереди постоять, а пока стоишь в очереди за Sch-M,
накопишь целый паровоз из жаждущих Sch-S и IS

в 2019 создание индекса сделали resumable, лог можно будет засирать только в положенное время.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864558
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123
@msLexmsLex,
а вы здесь?
хочу запостить вопрос про план,
и чтобы не на dba.stackexchange


@Yasha123
я почти каждый день здесь темы почитываю
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864594
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал шринковать малыми порциями, шринк не проходит и выдает следующую ошибку:

Could not adjust the space allocation for file 'Bl_SSD_1'.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864633
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

у вас только один выход - ожидать завершения,
хотя, учитывая приведенные объемы, смысл сего действия не ясен
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864703
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123_ч_Можно попробовать радикальный способ:
https://www.sqlskills.com/blogs/paul/why-you-should-not-shrink-your-data-files/
Код: sql
1.
CREATE INDEX … WITH (DROP_EXISTING = ON) ON 


вообще не вариант.
вы своим одним переносимым индексом
вообще всю таблицу блокируете.
а онлайново даже лучше и не пытаться,
из-за каких-то 50Гб на терабайтной базе вы в лог запишете пару терабайт
А если создать синонимичный индекс в другой файловой группе, а потом исходный просто удалить?
Это, по крайней мере, можно делать online.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39864723
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggsterА если создать синонимичный индекс в другой файловой группе, а потом исходный просто удалить?
Это, по крайней мере, можно делать online.
я чего-то не пойму, какая разница, где создавать.
хоть там, хоть здесь, или оффлайново или онлайново.
онлайново ему не светит, ибо стандард 2014 .
но даже если энтерпрайз и онлайновость доступна,
онлайново -- это ГЕНЕРАЦИЯ ТУЧИ ЛОГА
(построчное логирование)
+ на нагруженной системе блокировки вы получите похлеще шринка.
потому что ваше Sch-M непременно встанет в очередь,
а пока оно ждет, за вами вырастет очередь несовместимых со Sch-M блокировок.
оно (Sch-M) типа всего на мгновенье нужно,
но поезд из блокировок, пока ждете, вам устроит
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867116
Slava_Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если в таблицах есть поля BLOB которые лежат в этих файловых группах, то можете забыть про шринк на таких объемах. Быстрее будет перенос таблиц в новые файлы и ФГ, либо проанализировать какие таблицы имеют BLOB поля, их перенести и после это шринк выполнится быстрее(может их немного).
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867118
Slava_Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123uaggsterА если создать синонимичный индекс в другой файловой группе, а потом исходный просто удалить?
Это, по крайней мере, можно делать online.
я чего-то не пойму, какая разница, где создавать.
хоть там, хоть здесь, или оффлайново или онлайново.
онлайново ему не светит, ибо стандард 2014 .
но даже если энтерпрайз и онлайновость доступна,
онлайново -- это ГЕНЕРАЦИЯ ТУЧИ ЛОГА
(построчное логирование)
+ на нагруженной системе блокировки вы получите похлеще шринка.
потому что ваше Sch-M непременно встанет в очередь,
а пока оно ждет, за вами вырастет очередь несовместимых со Sch-M блокировок.
оно (Sch-M) типа всего на мгновенье нужно,
но поезд из блокировок, пока ждете, вам устроит

если правильно все организовать можно перенести, блокировки требутся только в начале процесса и в конце, это нужно отследить.
Переносил террабайтные индексы в онлайне все Ок, главное за логами следить и блокировками, все можно автоматизировать.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867126
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123,

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

Ну и если совсем с логом беда, то можно свитчится в балк-логгед модель (с разбором AlwaysOn) и молиться, чтобы во время операции не было проблем с СХД под данными.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867185
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,
а чем переключение в балк логгд поможет при онлайновом ребилде?
при оффлайновом залогируетcя минимально, но онлайново же все равно полно логируется
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867190
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичПо богатому опыту: онлайново не все так плохо, как разрисовано
ну не знаю.
на новом месте мне постоянно приходится править онлайново их триггеры.
тоже ведь "мгновенный alter" и такой же мгновенный Sch-M.
тем не менее, alter trigger встает в очередь и минимум минуту ждет (таблицы не отчетные, OLTP)
за это время накапливается поезд из жаждущих залезть в данную таблицу,
половина из них неизменно отваливается по таймауту
(у них в приложении всем 30 секунд выставлено)
и товарищи успевают нажаловаться.
а ведь у нас смешные объемы пользователей по сравнению с вашими.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867197
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123но онлайново же все равно полно логируетсяТак там же транзакции не удерживаются до завершения, поэтому лог сможет переиспользоваться. Разве нет?
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867208
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgYasha123но онлайново же все равно полно логируетсяТак там же транзакции не удерживаются до завершения, поэтому лог сможет переиспользоваться. Разве нет?
в балк логгед все удерживается.
это только логируется в нем минимально,
а лог "усекается" только бэкапами лога.
иначе какой бы был смысл в балк логгед, если все как в симпл?

но как раз онлайновый ребилд и логироваться будет полностью,
так что не понимаю, какая разница.
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867479
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123alexeyvgТак там же транзакции не удерживаются до завершения, поэтому лог сможет переиспользоваться. Разве нет?
в балк логгед все удерживается.
это только логируется в нем минимально,
а лог "усекается" только бэкапами лога.
иначе какой бы был смысл в балк логгед, если все как в симпл?

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

Вроде бы так.

Но детали быстро найти не удалось :-(
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867483
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgЯ имею в виду, что шринк не удерживает лок (транзакцию) на все данные до конца, он лочит их в коротких транзакциях, на время перемещения порции данных (до конца только лок на изменение схемы)Хотя да, если не симпл, то он же не будет самоудаляться...
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867520
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgalexeyvgЯ имею в виду, что шринк не удерживает лок (транзакцию) на все данные до конца, он лочит их в коротких транзакциях, на время перемещения порции данных (до конца только лок на изменение схемы)Хотя да, если не симпл, то он же не будет самоудаляться...
со шринком и так все ясно.
мой вопрос был обращен к Гавриленко
по поводу онлайнового ребилда.
он говорит, если перевести базу в балк логгед, в лог меньше уйдет.
мой вопрос: за счет чего?
онлайновость же оплачивается полным логированием ребилда
...
Рейтинг: 0 / 0
DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
    #39867522
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123,

Не уйдет. Балк-логгед имеет смысл только если не влезает оффлайновый ребилд.
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DBCC SHRINKFILE объемом 1Тб в высоконагруженной среде?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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