Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ребилд индексов в MS SQL server 2008 R2  [new]
ilik
Member

Откуда:
Сообщений: 178
Привет всем. У меня вопрос по фрагментации индексов в базе.
После полного ребилда индексов в базе часть индексов осталась фрагментирована

USE DB
GO
EXEC sp_MSforeachtable @command1="print '?' alter index all on ? rebuild "
GO



declare @databaseid int
select @databaseid=DB_ID ('DB')

SELECT DB_NAME(@databaseid) as baza,OBJECT_NAME(object_id),avg_fragmentation_in_percent,*
FROM sys.dm_db_index_physical_stats (@databaseid , NULL, NULL, NULL , NULL )
where avg_fragmentation_in_percent>=30;


Возвращает
avg_fragmentation index_type_desc
83,3333333333333 HEAP
99,0291262135922 HEAP
99,7578692493947 HEAP
98,4520123839009 HEAP
66,6666666666667 CLUSTERED INDEX
50 NONCLUSTERED INDEX
50 NONCLUSTERED INDEX
50 CLUSTERED INDEX
50 NONCLUSTERED INDEX
66,6666666666667 NONCLUSTERED INDEX


1) C heap непонятно как убрать фрагментированнось или фрагментации нету так как в них нету индексов и эта информация ошибочная?
2) А вот почему в некоторых индексах фрагментированность не пропала не понятно?
Кто нить тыкнете в чем может быть причина?
23 авг 11, 08:20    [11161231]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Там у вас в запросе вроде звездочка стоит (*)... А где ж остальные столбцы? В частности - page_count ?
23 авг 11, 08:28    [11161258]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
iljy
Member

Откуда:
Сообщений: 8711
ilik,

потому что индекс или таблица настолько малы, что живут в разделяемых экстентах например.
23 авг 11, 09:34    [11161533]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
ilik
Member

Откуда:
Сообщений: 178
спасибо!

ага для таблиц с индексами pages_count от 1 до 8
а вот для heap pages_count значения: 3013, 2362

Как можно убрать фрагментированность heap? или ее не нужно убирать
23 авг 11, 11:12    [11162273]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
komrad
Member

Откуда:
Сообщений: 5735
ilik
спасибо!

ага для таблиц с индексами pages_count от 1 до 8
а вот для heap pages_count значения: 3013, 2362

Как можно убрать фрагментированность heap? или ее не нужно убирать


перезалить
или
построить/удалить кластерный индекс
23 авг 11, 11:17    [11162338]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
ilik
Member

Откуда:
Сообщений: 178
komrad,

не понял причем тут heap и кластерный индекс?
23 авг 11, 12:37    [11163066]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
Glory
Member

Откуда:
Сообщений: 104751
ilik
не понял причем тут heap и кластерный индекс?

При том, что вы спросили "Как можно убрать фрагментированность heap"
23 авг 11, 12:40    [11163096]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
iljy
Member

Откуда:
Сообщений: 8711
ilik
komrad,

не понял причем тут heap и кластерный индекс?

При том. Вы знаете, что такое куча? И как ее дефрагментировать? Вот вам и предлагают простейший способ - создать на ней кластерный индекс, а потом его тупо убить. Кстати и обычные индексы при этом перестроятся, и лучше сначала их отключить, чтоб два раза не вставать.
23 авг 11, 12:43    [11163129]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
ilik
Member

Откуда:
Сообщений: 178
iljy,

спасибо более менее понятно, только геморой немного будет создавать и грохать индексы в работающей онлайн базе
23 авг 11, 13:23    [11163572]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
iljy
Member

Откуда:
Сообщений: 8711
ilik
iljy,

спасибо более менее понятно, только геморой немного будет создавать и грохать индексы в работающей онлайн базе

А перестраивать не геморрой?? Перестраивать кластерный индекс онлайн по любому умеет только Enterprise Edition.
23 авг 11, 13:26    [11163602]     Ответить | Цитировать Сообщить модератору
 Re: Ребилд индексов в MS SQL server 2008 R2  [new]
Eagle_84
Member

Откуда: Москва
Сообщений: 1535
может это подойдет
тынц
23 авг 11, 13:32    [11163646]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить