powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рост веса таблицы при сжатии
26 сообщений из 26, показаны все 2 страниц
Рост веса таблицы при сжатии
    #39932875
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Версия 2016 SP2 CU10 Enterprise.

Есть база размером 1.2 ТБ. В ней есть свободное место, шринк базы показывает минимум 620 ГБ. Появилась задача уменьшить размер до 650 ГБ.
Перед работами в выходные был выполнен бекап, база переведена в режим simple и запущено сжатие.
Через 18 часов запрос всё ещё продолжался, лог базы вырос до 460 ГБ, а в дата-файле показывало, что занято 900 ГБ. По самым крупным таблицам рост во время сжатия был около 30%. Была таблица 626к строк и размером 540 ГБ, во время сжатия стала 836 ГБ при всё тех же 626к строк, и так по всем таблицам. На самой большой таблице всего 1 некластерный индекс, как был размером 1МБ так и оставался. Свободного места на диске было 570 ГБ, оставалось около 110 ГБ. За несколько часов наблюдений ничего не менялось, сжатие было остановлено, лог очищен, база переведена в режим фулл, создан новый фулл-бекап.
Сегодня проверяю базу - размер таблиц и свободное место в базе вернулось к исходному.

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

Если кто-то сталкивался или просто знает - что это было и как решить?
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39932878
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

Тут обсуждали недавно похожую ситуацию со свободным местом.

https://www.sql.ru/forum/1322756/unused-space-klasternyh-tablic

А вообще на SQL 2016 Ent надо использовать columnstore
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39932918
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Команду-то в итоге какую запускали?
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39932928
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

Сжатие файла из SSMS с реорганизацией страниц.

Код: sql
1.
2.
3.
4.
USE [DB]
GO
DBCC SHRINKFILE (N'DB' , 650000)
GO
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39932939
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin,

Тему прочитал, но вроде не очень похоже.

У меня на таблице нет кластерного индекса, массовой вставки данных во время работ тоже не было.
В базе уже давно было свободное место в дата-файле, когда-то удаляли ненужные уже таблицы.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39932948
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion
Гавриленко Сергей Алексеевич,

Сжатие файла из SSMS с реорганизацией страниц.

Код: sql
1.
2.
3.
4.
USE [DB]
GO
DBCC SHRINKFILE (N'DB' , 650000)
GO

Я большие базы всегда шринкал в цикле, по чуть чуть. Мегабайт по 50.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39932956
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Danion,

Перепроверил индекс на самой большой таблице - я утром всё же не туда посмотрел и индекс там кластерный уникальный, хотя и не РК. Fill factor - 0.

alexeyvg,

Не очень понял, можно пример?
По 50 МБ это как, если файл сейчас 100000 МБ указывать сжимать до 99950? (ну или текущее - 50 МБ). Так вроде всё равно будет долго выполняться такое.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39932987
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

автор836 ГБ при всё тех же 626к строк

BLOB, что ли?
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39932997
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

База из серии 1С, к документообороту относится.

Самая большая таблица:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
USE [DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[_InfoRg9744](
	[_Fld9745_TYPE] [binary](1) NOT NULL,
	[_Fld9745_RTRef] [binary](4) NOT NULL,
	[_Fld9745_RRRef] [binary](16) NOT NULL,
	[_Fld9746] [varbinary](max) NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO



Единственный индекс:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
USE [DB]
GO
SET ANSI_PADDING ON
GO
CREATE UNIQUE CLUSTERED INDEX [_InfoRg9744_ByDims] ON [dbo].[_InfoRg9744]
(
	[_Fld9745_TYPE] ASC,
	[_Fld9745_RTRef] ASC,
	[_Fld9745_RRRef] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO



[_Fld9746] [varbinary](max) - ага, похоже на BLOB.

У таблицы топ 2 по размеру и росту во время шринка тоже [_SettingsData] [varbinary](max) NULL
У следующей по размеру одно из полей [_Fld1030] [varbinary](max) NOT NULL

Пойду пока освежу воспоминания по блобам.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933026
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

Нашел пример сжатия частями на https://infostart.ru/public/1031815/
5 пост
и в https://www.sqlshack.com/shrinking-your-database-using-dbcc-shrinkfile/
На тестовой базе отработало нормально, проверю как будет себя вести база при таком способе.
Что-то подобное используете?
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933037
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion
Есть база размером 1.2 ТБ.
Через 18 часов запрос всё ещё продолжался

Смешно.
Если там не "японский сверхкомпутер"... то 18 суток было бы уместнее.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933052
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

В смысле? 1 целое, 2 десятых ТБ - оно же 1229 ГБ. Какие 18 суток?
Если нормально всё происходит, то меньше суток на среднем сервере подобные размеры обрабатывает.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933075
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion
aleks222,

В смысле? 1 целое, 2 десятых ТБ - оно же 1229 ГБ. Какие 18 суток?
Если нормально всё происходит, то меньше суток на среднем сервере подобные размеры обрабатывает.

У нас очень разные "средние" сервера.
Но я рад за вас.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933086
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

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

Пока немного позапускал сжатие частями из поста выше и получается неплохо. Таблицы не растут, можно останавливать в любой момент и прошлые куски уже выполнены. За два подхода 100+ ГБ освободилось.
До этого как-то запускал шринк именно с небольшим уменьшением размера файла и времени занимало уйму, но это видимо зависит ещё от разброса пустого места по файлу.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933140
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion
alexeyvg,

Нашел пример сжатия частями на https://infostart.ru/public/1031815/
5 пост
и в https://www.sqlshack.com/shrinking-your-database-using-dbcc-shrinkfile/
На тестовой базе отработало нормально, проверю как будет себя вести база при таком способе.
Что-то подобное используете?
Ну да, цикл.
Посмотрел, на самом деле я шринкал порциями не по 50, а по 500-1000 мб, это оказалось оптимально.
Я размер порции сделал параметром, и потом подбирал оптимальный размер.

Danion
Пока немного позапускал сжатие частями из поста выше и получается неплохо.
И ещё, оно не мешает работе базы.
Можно просто запустить, и потом проверить результат.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933151
Danion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

За идею спасибо! С сжатием базы реально намного проще пошло. Понаблюдаю ещё за базой несколько дней.

Хотя именно с причинами почему обычное сжатие пошло так странно осталось не ясно. У блоба с налёту не нашел описаний похожего поведения, кластерные индексы могут расти обратно при планах обслуживания индекса, но не самого шринка.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933152
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю, что размер таблицы растет из-за фрагментации BLOB.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933188
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danion,

при ваших объемах я бы советовал вам перегнать таблицы в новые ФГ, с последующим удалением старых.
да это "больше" в плане трудозатрат, но экономичнее в плане ресурсов времени и IO.

на тему вредности shrink уже столько всего написано.
лучше всего наверное с аггрегацией у Брента:
https://www.brentozar.com/archive/2009/08/stop-shrinking-your-database-files-seriously-now/

куча ссылок и рекомендаций: не используете shrink
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39933842
Idol_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

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

Другое дело, что делать это с лагом всего в 5% (30Гб), очень затратная затея. И про 18 дней не такая уж фантастика :). Хотя бы стольник оставили и все шринканулось бы за несколько часов.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39934088
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Idol_111,
Потому что еще после шринка базу нужно будет приводить в порядок. А все это время которое потребуется на обслуживание конечные пользователи будут страдать и выносить дба мозги.

Ну если организация допускает такие моменты то пожалуйста
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39934981
Idol_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Idol_111,
Потому что еще после шринка базу нужно будет приводить в порядок.

А вот это момент если можно по-подробней.
Что хотите там улучшить? Не забываем, что на дворе 2020 год, а не системы прошлого века.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39934994
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Idol_111
felix_ff
Idol_111,
Потому что еще после шринка базу нужно будет приводить в порядок.

А вот это момент если можно по-подробней.
Что хотите там улучшить? Не забываем, что на дворе 2020 год, а не системы прошлого века.


А вы не забывайте что шринк это не просто освобождение неиспользуемого места для ОС (не говорим сейчас про TRUNCATE ONLY).
Он перемещает страницы данных. После него такая каша будет в плане внешней фрагментации - закачаешься.
После него нужно еще все индексы на затронутых таблицах перестраивать и вот тут вот как раз и есть обратная сторона медали - процесс затратный и дорогой, а пока вы их будете ребилдить получите еще тонну писем от возмущенных пользователей почему сегодня система работает очень медленно.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39935002
Idol_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

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

Я тоже балуюсь этой ерундой (ребилдингом) по привычке. Толку от него около ноля.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39935188
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Idol_111,

именно, даже если это не NAS, а HDD, то логические головки и диски не отображают физическое расположение.
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39935199
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Idol_111,

именно, даже если это не NAS, а HDD, то логические головки и диски не отображают физическое расположение.
То есть, получается, можно шринк всех баз вставить в ежедневное обслуживание?
...
Рейтинг: 0 / 0
Рост веса таблицы при сжатии
    #39935257
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

Если после сжатия происходит разжатие, то не стоит. И разве не появляется фрагментация данных при сжатии?
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рост веса таблицы при сжатии
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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