2014-10-22 4 views
0

Я использовал SQL Server 2012 как свою продукцию с более чем 2 лет. В этот период я ​​добавил некоторые индексы, но никогда не касался фрагментации. Честно говоря, я не знал о фрагментации индекса. Но сегодня, когда я бежал,Будет ли восстановление индексов остановить мою производственную базу данных?

SELECT 
    dbschemas.[name] as 'Schema', 
    dbtables.[name] as 'Table', 
    dbindexes.[name] as 'Index', 
    indexstats.avg_fragmentation_in_percent, 
    indexstats.page_count 
FROM 
    sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats 
INNER JOIN 
    sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id] 
INNER JOIN 
    sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id] 
INNER JOIN 
    sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id] 
          AND indexstats.index_id = dbindexes.index_id 
WHERE 
    indexstats.database_id = DB_ID() 
ORDER BY 
    indexstats.avg_fragmentation_in_percent DESC 

я получил следующие результаты:

Schema Table       Index       avg_fragmentation_in_percent page_count 
-------------------------------------------------------------------------------------------------------------- 
dbo  ELMAH_Error     IX_ELMAH_Error_App_Time_Seq   99.2438563327032    529 
dbo  ELMAH_Error     PK_ELMAH_Error      98.8664987405542    794 
dbo  ProductsCountriesVariants PK__Products__3214EC270AC6A076  98        100 
dbo  Tags      PK_Tags        91.2820512820513    195 
dbo  ProductGallery    PK_ProductGallery     89.0909090909091    220 
dbo  devicecatalog    IX_DeviceCatalog_NativeDeviceID  88.5964912280702    342 
dbo  Products     IX_Products_RetailerID_ModelNumber 88.5245901639344    122 
dbo  Products     IX_Products_RetailerID_SKU   82.7272727272727    110 
-------------------------------------------------------------------------------------------------------------- 

Должен ли я Перестроить все индексы? Будет ли это работать с моей базой данных на производстве? Интересно, что я только что создал индекс IX_DeviceCatalog_NativeDeviceID несколько минут назад.

+0

Является ли ваш индекс 'IX_DeviceCatalog_NativeDeviceID' индексом в столбце' uniqueidentifier' (GUID)? –

+0

@marc_s, no varchar (500) – user960567

+0

@marc_s, у меня есть несколько столбцов с индексом 'NULL', но 83% от' avg_fragmentation_in_percent'. Что это значит? – user960567

ответ

2

Перестроение индекса будет блокировать таблицу, если не указано, что операция выполняется в Интернете:

ALTER INDEX REBUILD WITH (ONLINE = ON) 

, который доступен только в версии Enterprise и выше.

+0

Тогда что вы должны предложить. Должен ли я перестроить все индексы? Почему после добавления индекса в течение нескольких минут его фрагментация становится 90% – user960567

+0

Я использую веб-версию. – user960567

+1

С веб-версией вы не можете перестраивать индексы без блокировки таблиц. – DavidG

1

Вы также можете увидеть, будет ли реорганизация , пока вы не сможете выполнить полную перестройку. Вам нужно сделать больше исследований, но в основном, реорганизовать так часто, как нужно, чтобы ваша фрагментация была меньше 20-30%, пока вы не сможете rebuild его в нерабочие часы. Игнорируйте что-либо с менее чем 15-20 страницами, потому что фрагментация не является надежной.

Индексы с именем NULL - это временные индексы, созданные системой до тех пор, пока служба не будет перезапущена.

Смежные вопросы