Фрагментация индекса SQL Server 2005 - PullRequest
1 голос
/ 17 ноября 2009

Несколько ключей в базе данных SQL Server 2005, которую я унаследовал, имеют очень высокий процент фрагментации. При использовании следующего SQL:

select  OBJECT_NAME(object_id), avg_fragmentation_in_percent, record_count, *
from    sys.dm_db_index_physical_stats (DB_ID(N'FragmentedDB'), NULL, NULL, NULL, 'Detailed') s

Я вижу, что несколько таблиц с% фрагментации между 50 и 99. Все эти таблицы имеют более 100 000 строк, некоторые с более чем 2 000 000. Я считаю, что это вызывает значительные проблемы с производительностью для нашего приложения, поэтому я попытался перестроить некоторые из этих индексов с помощью следующего sql:

ALTER INDEX ALL ON [dbo].[FragmentedTable] 
REBUILD WITH ( FILLFACTOR = 90, ONLINE = ON )

Однако после того, как я перестроил индекс и снова посмотрел на фрагментацию%, все они не изменились. Есть ли что-то, что мне не хватает? Я провел несколько поисков по этой теме, но до сих пор пустовал.

Спасибо!

Ответы [ 5 ]

1 голос
/ 17 ноября 2009

Вы используете 'Подробно' с dm_db_index_physical_stats. Это покажет не листовые уровни, а также листовые уровни индексов.

Является ли фрагментация для уровней листьев (leaf_level = 0), для уровней не листьев (leaf_level> 0) или для обоих?

Если фрагментация находится на уровне, не связанном с листом, это не проблема или не проблема.

Если вы все еще хотите избавиться от фрагментации, попробуйте добавить PAD_INDEX.

1 голос
/ 17 ноября 2009
0 голосов
/ 17 ноября 2011

Было два метода удаления фрагментации. Эти два метода необходимы, потому что они имеют совершенно разные характеристики.

Описывает различия между тремя методами в SQL Server 2005 и более поздних версиях:

ALTER INDEX… REORGANIZE (новый DBCC INDEXDEFRAG)

ALTER INDEX… REBUILD (новый DBCC DBREINDEX)

ALTER INDEX… REBUILD

Подробнее
http://sqlnetcode.blogspot.com/2011/11/sql-server-methods-for-removing.html

0 голосов
/ 17 ноября 2009

Мысль ..

  • Это разделено? REBUILD PARTITION = partition_number
  • Нужно LOB_COMPACTION = ON?
  • Есть ли у вас кластерный индекс?
0 голосов
/ 17 ноября 2009

Несколько вещей приходят на ум - сначала будет, если вы используете несколько файлов для поддержки индексов в таблице, затем будет параллелизм, который вы видите при перестройке индекса. Далее вы упоминаете, что считаете, , что это вызывает проблемы с производительностью, вы убедились, что это так? то есть, за некоторыми исключениями, фрагментация обычно является более серьезной проблемой для сканирования и поиска. Для полного подробного обзора фрагментации, как решить, где сосредоточиться, и различия, которые вы видите с различными методами исправления, см. эту серию сообщений в блоге .

...