powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не очищается место
5 сообщений из 5, страница 1 из 1
Не очищается место
    #39942913
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64) Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

Здравствуйте.
Давно мучаюсь со следующей проблемой:
В рабочей базе есть таблица с ~400 млн строк с интенсивной записью.
Основные данные – три varbinary(max) столбца.
Средняя длинна данных в одном varbinary(max) столбце ~2,5КБ, но может иногда выходить за 8КБб поэтому выбрано max.
База в full но может быть переведена в simple.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE [MyBigTab]
(
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY ,
[ExternID1] [int] NULL,
[ExternID2] [varchar](100) NULL,
-- нескольео не блоб столбцов
[blob1] [varbinary](max) NULL,
[blob2] [varbinary](max) NULL,
[blob3] [varbinary](max) NULL
)
--несколько индексов




Ежедневно большая часть старых данных в этих трёх столбцах перезаписывается в NULL.
Но не всё, а в зависимости от некоторой логики.

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

После перезаливки освобождение места происходит огромное.
Например, её текущий размер 2700GB, а размер копии 480GB.

Запрос на количество GHost записей возвращает 0.
Код: sql
1.
2.
3.
SELECT 
sum(ghost_record_count) total_ghost_records
FROM sys.dm_db_index_physical_stats (DB_ID('MyBase'), OBJECT_ID('MyBigTable'), NULL, NULL, 'SAMPLED')


Несмотря на это запустил sp_clean_db_file_free_space на тестовой машине, но ждать окончания ещё долго.

Может, у кого нибудь есть объяснение и рецепт как решить/обойти проблему?
...
Рейтинг: 0 / 0
Не очищается место
    #39942943
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64)
Версия уже не поддерживается - планы на апгрейд?

таблица кластеризована или куча?

>Ежедневно большая часть старых данных в этих трёх столбцах перезаписывается в NULL.
Таблицу секционировать (partition) по ID

>Перестройка индекса не годится, т.к. выведет таблицу в оффлайн.
В вашей версии можно перестраивать онлайн и даже только старых партиций.
Но толку от этого не будет по другой причине - пустое место будет в LOB_DATA, а оно ребилдом не освобождается
По идее если вы сделаете REORGANIZE WITH ( LOB_COMPACTION = ON ) должно помочь
https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms189858(v=sql.105)
Опять же сделать это можно только для нужных партиций

Если не поможет то можно переливать только нужные партиции ALTER TABLE SWITCH PARTITION - действо будет всяко быстрее переливки всей таблицы.
...
Рейтинг: 0 / 0
Не очищается место
    #39942951
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,

Спасибо. Попробую в первую очередь REORGANIZE WITH ( LOB_COMPACTION = ON ).

>Версия уже не поддерживается - планы на апгрейд?
Планов пока нет. Enterprise > 2008 не потянем по деньгам.
Остаётся ждать, пока подержанные лицензии подешевеют до приемлимого уровня или не появится "абсолютная" необходимость апгрейта.

>таблица кластеризована или куча?
Кластеризована, столбей ID - PRIMARY KEY CLUSTERED


>Таблицу секционировать (partition) по ID
Обдумаю

>>Перестройка индекса не годится, т.к. выведет таблицу в оффлайн.
>В вашей версии можно перестраивать онлайн и даже только старых партиций.
Я имел ввиду, что для rebuild with online для PK не работает, если в таблице есть блобы.
Можно только reorganize - что Вы посоветовали.
...
Рейтинг: 0 / 0
Не очищается место
    #39944249
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,

Спасибо.

Команда REORGANIZE WITH ( LOB_COMPACTION = ON ) выполнялась 3 дня но сработала, освободилось много места.
...
Рейтинг: 0 / 0
Не очищается место
    #39945192
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
REORGANIZE WITH ( LOB_COMPACTION = ON ) выполняется от нескольких часов до несколько дней на каждом индексе.
Есть ли способ заранее оценить дефрагментированность БЛОБОв?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не очищается место
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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