|   |   | 
| 
 | Индексы sql, как посмотреть фрагментацию? | ☑ | ||
|---|---|---|---|---|
| 0
    
        OldCondom 19.02.20✎ 11:11 | 
        Развернул базу из бекапа, к кластеру еще не подключал.
 Формирую стандартный отчет mssql "Физическое состояние индексов". Получаю, к примеру, по таблице "_Acc28" некластеризованный индекс "_Acc28_ByCode_SR", фрагментация 50%, рекомендация - перестроить. Выбираю в дереве этот индекс - перестроить. Операция выполнена успешна. Формирую отчет, изменений нет! Те же 50% фрагментации. Такая же ситуация через план обслуживания. Что не так-то? Как правильно перестраивать/дефрагментировать индексы? Или отчет кривой? | |||
| 1
    
        OldCondom 19.02.20✎ 11:16 | 
        хм, сделал dbcc freeproccache, сейчас отчет формирую заново. Ну хз, может что изменится.     | |||
| 2
    
        OldCondom 19.02.20✎ 11:26 | 
        Такс, команда
 ALTER INDEX _Acc28_ByCode_SR ON [имябазы].[dbo].[_Acc28] REBUILT ничего не дала. ФРагментация осталась, хотя при перестроении должна быть равна 0. ALTER INDEX _Acc28_ByCode_SR ON [имябазы].[dbo].[_Acc28] REORGANIZE - фрагментацию убрала. Что-то я не догоняю | |||
| 3
    
        Aleksey 19.02.20✎ 11:33 | 
        UPDATE STATISTICS делал?     | |||
| 4
    
        OldCondom 19.02.20✎ 11:36 | 
        Если не ошибаюсь, делал. С вероятностью в 80%)     | |||
| 5
    
        OldCondom 19.02.20✎ 11:36 | 
        Судя по всему тут вырисовывается вопрос, а rebuilt вообще отрабатывает?     | |||
| 6
    
        trad 19.02.20✎ 12:01 | 
        https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/reorganize-and-rebuild-indexes?view=sql-server-ver15
 на всякий случай, вдруг еще не читал | |||
| 7
    
        OldCondom 21.02.20✎ 12:45 | 
        В общем, либо я не умею смотреть, либо руки не из плеч, но план обслуживания как с реорганизацией, так и перестроением судя по отчету "Физическое состояние индексов" ничего толком не делают. Фрагментация остается. 
 Отрабатывает ПКМ на индексе, далее реорганизовать или перестроить. Посмотрел, что там за скрипт. "USE [имя базы] GO ALTER INDEX [имя индекса] ON [dbo].[имя таблицы] REORGANIZE WITH ( LOB_COMPACTION = ON ) GO" Нашел такой скрипт, к умному(с анализом процента фрагментации) он не относится, но хоть что-то. Выполняется схожий скрипт, который по ПКМ, но для всех индексов всех таблиц БД. "Use имя БД Declare @TBname nvarchar(255), @SQL nvarchar(max) select @TBname = min(TABLE_NAME) from INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' while @TBname is not null BEGIN set @SQL='ALTER INDEX ALL ON [' + @TBname + '] REORGANIZE;' --print @SQL EXEC SP_EXECUTESQL @SQL select @TBname = min(TABLE_NAME) from INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' and TABLE_NAME > @TBname END" | |||
| 8
    
        OldCondom 21.02.20✎ 12:46 | 
        Фрагментация исчезла. 
 Теперь надо над перестроением думать. Как там 1С рекомендует? Более 30% фрагментации - перестроить, что ли. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |