SQL Server: Что находится в primary filegroup кроме индексов?
От: Somescout  
Дата: 08.05.17 22:30
Оценка:
Решил сжать и красиво разложить таблицы из большой базы по разным файловым группам (основная задача была уменьшить объём базы, но поскольку уменьшение объёма файла приводит к сильному росту фрагментации, решил пересоздать индексы в отдельных файловых группах). В процессе возникло два вопроса:

1) Есть пустая таблица (data_pages = 0) — как перенести её в другую группу? Обычным CREATE CLUSTERED INDEX WITH(DROP_EXISTING) не получается — после отработки команды всё по прежнему. А удалить кластерный индекс не выходит, поскольку на него завязан первчиный ключ.

2) После переноса всех таблиц, согласно такому запросу:
select t.name, i.name, i.type_desc, fg.name, a.total_pages, a.data_pages, p.rows
    from sys.filegroups fg
    join sys.allocation_units a on a.data_space_id = fg.data_space_id
    join sys.partitions p on p.partition_id = a.container_id
    join sys.indexes i on i.object_id = p.object_id and i.index_id = p.index_id
    join sys.tables t on t.object_id = i.object_id
    where t.name = 'MyTable'
    order by a.total_pages desc


Table   Index           type            FG      total_pages     data_pages      rows
=====   =====           ====            ==      ===========     ==========      ====
MyTable MyTable_CL      CLUSTERED       PRIMARY 6437066         0               6644
MyTable MyTable_CL      CLUSTERED       work    57              48              6644


То есть два кластерных индекса, один из которых не содержит данных, зато содержит 50GB непонятных страниц и мешает уменьшить файл.
Перенос проводился через CREATE CLUSTERED INDEX WITH(DROP_EXISTING).
ARI ARI ARI... Arrivederci!
Re: SQL Server: Что находится в primary filegroup кроме индексов?
От: _ABC_  
Дата: 09.05.17 07:03
Оценка:
Здравствуйте, Somescout, Вы писали:

S>То есть два кластерных индекса, один из которых не содержит данных, зато содержит 50GB непонятных страниц и мешает уменьшить файл.

1. Кластерный индекс один. Разные партиции и аллокации.
2. total_pages — это выделенные или зарезервированные аллокацией страницы. Смотри еще used_pages, чтобы увидеть реально используемые страницы.
3. Посмотри еще a.type_desc, чтобы понять тип аллокации.
Re[2]: SQL Server: Что находится в primary filegroup кроме индексов?
От: Somescout  
Дата: 09.05.17 07:53
Оценка:
Здравствуйте, _ABC_, Вы писали:

_AB>3. Посмотри еще a.type_desc, чтобы понять тип аллокации.


LOB Data остались. Понятно. Не знаю, стоит ли даже переносить их — вроде как это делается только через партиционирование.
ARI ARI ARI... Arrivederci!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.