2009-11-17 3 views
1

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

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) 

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

Спасибо!

+0

Я тоже получаю то же самое. Но когда я использую студию Sql Management для проверки фрагментации (используя свойства индекса), она показывает правильное значение фрагментации 0,24%. Когда я использую подобный подход, он говорит, что он на 100% фрагментирован. – Kelly

+0

Реорганизовали ли вы индекс? –

+0

Да, я также побежал: ALTER INDEX ALL ON [dbo]. [FragmentedTable] REORGANIZE – Blather

ответ

0

Пара вещей приходит на ум - сначала было бы, если вы используете несколько файлов для поддержки индексов в таблице, а следующий - параллелизм, который вы видите при восстановлении индекса. Затем вы упомянули, что считают, что вызывает проблемы с производительностью, подтвердили ли вы это? то есть с некоторыми исключениями, фрагментация, как правило, представляет собой большую проблему для сканирования и поиска. Подробный обзор фрагментации, как обращаться, где сосредоточиться и какие различия вы видите с помощью различных методов ремонта, см. В разделе this series of blog posts.

0

Мысли ..

  • распределяли это? REBUILD PARTITION = partition_number
  • Нужна LOB_COMPACTION = ON?
  • У вас есть кластеризованный индекс?
+0

На данный момент это не разделы. Я повторил свой запрос с LOB_COMPACTION = ON и ничего не изменилось. У меня есть как кластерные, так и некластеризованные индексы, которые страдают от описанных мною проблем фрагментации. Спасибо за ваш ответ! – Blather

1

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

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

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

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

0

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

Описывает различия между тремя методами в 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

ссылка больше не работает –

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

  • Нет связанных вопросов^_^