|
Не очищается место
|
|||
---|---|---|---|
#18+
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.
Ежедневно большая часть старых данных в этих трёх столбцах перезаписывается в NULL. Но не всё, а в зависимости от некоторой логики. К сожалению, при этом не присходит освобождения свободного места ни в таблице, ни в базе. Пока что приходится раз в нескольно месяцев перезаливать таблицу. Перестройка индекса не годится, т.к. выведет таблицу в оффлайн. После перезаливки освобождение места происходит огромное. Например, её текущий размер 2700GB, а размер копии 480GB. Запрос на количество GHost записей возвращает 0. Код: sql 1. 2. 3.
Несмотря на это запустил sp_clean_db_file_free_space на тестовой машине, но ждать окончания ещё долго. Может, у кого нибудь есть объяснение и рецепт как решить/обойти проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 16:35 |
|
Не очищается место
|
|||
---|---|---|---|
#18+
>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 - действо будет всяко быстрее переливки всей таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 17:32 |
|
Не очищается место
|
|||
---|---|---|---|
#18+
SERG1257, Спасибо. Попробую в первую очередь REORGANIZE WITH ( LOB_COMPACTION = ON ). >Версия уже не поддерживается - планы на апгрейд? Планов пока нет. Enterprise > 2008 не потянем по деньгам. Остаётся ждать, пока подержанные лицензии подешевеют до приемлимого уровня или не появится "абсолютная" необходимость апгрейта. >таблица кластеризована или куча? Кластеризована, столбей ID - PRIMARY KEY CLUSTERED >Таблицу секционировать (partition) по ID Обдумаю >>Перестройка индекса не годится, т.к. выведет таблицу в оффлайн. >В вашей версии можно перестраивать онлайн и даже только старых партиций. Я имел ввиду, что для rebuild with online для PK не работает, если в таблице есть блобы. Можно только reorganize - что Вы посоветовали. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 17:55 |
|
Не очищается место
|
|||
---|---|---|---|
#18+
SERG1257, Спасибо. Команда REORGANIZE WITH ( LOB_COMPACTION = ON ) выполнялась 3 дня но сработала, освободилось много места. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2020, 13:33 |
|
|
start [/forum/topic.php?fid=46&fpage=63&tid=1686251]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 287ms |
total: | 411ms |
0 / 0 |