none
Физическая статистика индекса RRS feed

  • Вопрос

  • Добрый день, выбираю базу данных на палитре свойств, перехожу в Отчеты - Стандартные отчеты - Физическая статистика индекса. Там в колонке рекомендации вижу Перестроить или Реорганизовать в таблицах. Далее создаю план обслуживания для Реорганизации и Перестройки и выполняю план. План выполняется, все успешно, и далее проверяю в отчёте и вижу те же самые поля (Перестроить или Реорганизовать) в тех же местах. Почему план срабатывает, уведомляет об успешности процесса, но нужного результата не даёт?
    5 октября 2014 г. 21:37

Ответы

  • 6 октября 2014 г. 10:31
  • Добрый день.

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

    Если у вас небольшие таблицы, в основном вы можете игнорировать фрагментацию индексов данных таблиц.

    Когда число страниц индекса достигает определенно большого размера (например, 1000 страниц), то фрагментация может начать влиять на производительность. Перестроение индекса должно уменьшить фрагментацию.

    Выполните запрос к представлению sys.dm_db_index_physical_stats, который возвращает больше сведений о размере и фрагментации данных и индексов:

    USE database_name
    GO
    SELECT * 
    from sys.dm_db_index_physical_stats
    

    Посмотрите на поле page_count. Если там значения меньше 8 –и, то перестроение индексов не изменит состояние фрагментации, если значение меньше 1000, то перестроение индексов не повысит производительность данных индексов.

    Отфильтруйте индексы и делайте rebuild этих индексов

    SELECT * 
    from sys.dm_db_index_physical_stats( DB_ID(),NULL,NULL,NULL,NULL) st
    join sys.tables t on (st.object_id=t.object_id)
    join sys.schemas sc on (sc.schema_id=t.schema_id)
    join sys.indexes idx on (t.object_id=idx.object_id and st.index_id=idx.index_id)
    join sys.partitions p on (p.index_id=idx.index_id and p.object_id=idx.object_id)
    where st.avg_fragmentation_in_percent > 30 and page_count > 1000
    order by st.avg_fragmentation_in_percent desc

    Удачи


    10 октября 2014 г. 8:00

Все ответы

  • 6 октября 2014 г. 10:31
  • Добрый день.

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

    Если у вас небольшие таблицы, в основном вы можете игнорировать фрагментацию индексов данных таблиц.

    Когда число страниц индекса достигает определенно большого размера (например, 1000 страниц), то фрагментация может начать влиять на производительность. Перестроение индекса должно уменьшить фрагментацию.

    Выполните запрос к представлению sys.dm_db_index_physical_stats, который возвращает больше сведений о размере и фрагментации данных и индексов:

    USE database_name
    GO
    SELECT * 
    from sys.dm_db_index_physical_stats
    

    Посмотрите на поле page_count. Если там значения меньше 8 –и, то перестроение индексов не изменит состояние фрагментации, если значение меньше 1000, то перестроение индексов не повысит производительность данных индексов.

    Отфильтруйте индексы и делайте rebuild этих индексов

    SELECT * 
    from sys.dm_db_index_physical_stats( DB_ID(),NULL,NULL,NULL,NULL) st
    join sys.tables t on (st.object_id=t.object_id)
    join sys.schemas sc on (sc.schema_id=t.schema_id)
    join sys.indexes idx on (t.object_id=idx.object_id and st.index_id=idx.index_id)
    join sys.partitions p on (p.index_id=idx.index_id and p.object_id=idx.object_id)
    where st.avg_fragmentation_in_percent > 30 and page_count > 1000
    order by st.avg_fragmentation_in_percent desc

    Удачи


    10 октября 2014 г. 8:00