powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В таблице в БД большой объем свободного места. Как его освободить?
15 сообщений из 15, страница 1 из 1
В таблице в БД большой объем свободного места. Как его освободить?
    #39714883
fat-fag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база на MS SQL Server 2008 R2 (SP1) размером 570 Гб. Свободного места в ней 46 Гб. Но заодно в таблицах есть куча свободного места, например:

namerowsreserveddataindex_sizeunusedN34_28667505 KB10717400 KB2126048 KB56 KB8591296 KBN347525930 KB6033704 KB798480 KB88 KB5235136 KB32Note259521 KB1180336 KB199480 KB56 KB 980800 KBN802 171842 KB1104232 KB168328 KB8496 KB927408 KB
т.е. уже только в этих таблицах из 19 Гб занятого места данные+индексы занимают 3 Гб, а остальное (16 Гб) - свободное место (unused). А всего можно освободить где-то 50 Гб.

Пробовал по разному:
1) сжатие базы не помогло;
2) dbcc checkdb и dbcc checkcatalog ошибок не выявили;
3) перестройка всех индексов не помогла;
4) DBCC OPENTRAN - нет открытых транзакций;
5) пробовал сжимать (Compression) эти таблицы - данные чуть-чуть сжимаются, свободное место - не изменяется;
6) dbcc sqlperf (logspace) - в логе из 20 Гб занято 0.45 %.

Подскажите, пожалуйста, как освободить свободное место из этих таблиц?
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39714894
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fat-fagперестройка всех индексов не помоглаДля куч бесполезно перестраивать индексы в целях удаления неиспользуемого места в таблице. Перестраивать нужно саму таблицу.
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39714898
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fat-fag,

1) создать-удалить кластерный индекс
2) alter table rebuild
3) переписать данные в новую таблицу, удалить старую, переименовать новую
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39714951
fat-fag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосовfat-fag,

1) создать-удалить кластерный индекс
2) alter table rebuild
3) переписать данные в новую таблицу, удалить старую, переименовать новую
т.е. надо сделать вот так по пунктам, или любой из трех вариантов подойдет?
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39714993
fat-fagВладислав Колосовfat-fag,

1) создать-удалить кластерный индекс
2) alter table rebuild
3) переписать данные в новую таблицу, удалить старую, переименовать новую
т.е. надо сделать вот так по пунктам, или любой из трех вариантов подойдет?

п. 3 - самодостаточный

Если у таблицы есть кластерный индекс, то его REBUILD должен помочь.
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715004
fat-fag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал перестроить кластерный индекс, пробовал удалить кластерный индекс, затем снова его создать, пробовал alter table rebuild - пока не помогает.
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715037
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выполните, например, для первой таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select object_name(p.object_id) as tbl, 
       p.index_id,
	   au.total_pages,
	   au.used_pages,
	   au.type_desc,
	   cast((au.total_pages - au.used_pages) * 8. / 1024  as decimal(10,3)) as unused_Mb
from sys.allocation_units au
     join sys.partitions p
	    on au.container_id = p.hobt_id
where object_name(p.object_id) = 'N34_28'
order by au.total_pages - au.used_pages desc;


чтобы уж понять, куча там, кластерный ли, LOB-ы может какие...
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715055
fat-fag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123, выполнил, вот результат:

tblindex_idtotal_pagesused_pagestype_descunused_MbFN1534_2811337201263275LOB_DATA8390.047FN1534_28124732465IN_ROW_DATA0.063
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715060
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fat-fag,

Выполните
Код: sql
1.
alter index all on FN1534_28 reorganize;
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715063
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fat-fag,

Посмотрите, какой у этого индекса fill factor. Можно в sys.indexes, можно в SSMS в дереве правой кнопкой -> SCRIPT AS -> ...
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715069
fat-fag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm, выполнил, все осталось по прежнему.
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715075
fat-fag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ennor Tiegael, fill factor = 0
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715078
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fat-fag,

Сделайте DBCC CLEANTABLE , проблема известная.
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715079
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegaelfat-fag,

Посмотрите, какой у этого индекса fill factor. Можно в sys.indexes, можно в SSMS в дереве правой кнопкой -> SCRIPT AS -> ...
это не FF, это LOB data, вон же 8Гб unused там и есть
...
Рейтинг: 0 / 0
В таблице в БД большой объем свободного места. Как его освободить?
    #39715174
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fat-fagЕсть база на MS SQL Server 2008 R2 (SP1)Таки пропатчите уже сервер. Последний сервис пак (SP3) вышел 4 года назад.

FIX: Cannot reclaim unused space by using shrink operation in the table that contains a LOB column in SQL Server
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В таблице в БД большой объем свободного места. Как его освободить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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