Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
zzzzzzzzzz
Member

Откуда:
Сообщений: 310
Mind
Sergey Syrovatchenko,

А что кто то еще дефрагментирует индексы? А зачем?


SQL Server пофигу на все ваши ссд и видимость быстрой работы
9 май 19, 01:24    [21881590]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2236
zzzzzzzzzz
Mind
Sergey Syrovatchenko,

А что кто то еще дефрагментирует индексы? А зачем?


SQL Server пофигу на все ваши ссд и видимость быстрой работы
Пруф пожалуйста?
9 май 19, 08:55    [21881625]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

Откуда: Харьков
Сообщений: 29
Выложил версию 1.0.0.34:

  • Добавил вывод лога в отдельном гриде
  • Возможность отключать некластерные индексы
  • Исправил мелкие ошибки при выделении

    Картинка с другого сайта.
  • 9 май 19, 09:27    [21881643]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    andy st
    Member

    Откуда:
    Сообщений: 692
    Sergey Syrovatchenko,
    Встретил ошибку
    автор
    Сообщение 102, уровень 15, состояние 1, строка 29
    Incorrect syntax near ')'.

    Для sys.dm_db_index_physical_stats срабатывает исключение
    автор
    The built-in function DB_ID can be specified. When using DB_ID without specifying a database name, the compatibility level of the current database must be 90 or greater.
    13 май 19, 07:30    [21882966]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Sergey Syrovatchenko
    Member

    Откуда: Харьков
    Сообщений: 29
    andy st, а можно узнать версию SQL Server и compatibility level. Как я понял это 2008R2?
    13 май 19, 09:05    [21883004]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    andy st
    Member

    Откуда:
    Сообщений: 692
    Sergey Syrovatchenko
    andy st, а можно узнать версию SQL Server и compatibility level. Как я понял это 2008R2?

    Microsoft SQL Server 2008 R2 (SP3) - 10.50.6529.0 (X64)   Mar 19 2015 13:19:13 
    Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build : ) (Hypervisor) 
    

    для проблемной базы compatibility level = 80
    13 май 19, 09:29    [21883039]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Sergey Syrovatchenko
    Member

    Откуда: Харьков
    Сообщений: 29
    Выложил версию 1.0.0.35:

  • Исправил ошибку для SQL Server 2008: "The built-in function DB_ID can be specified. When using DB_ID without specifying a database name..."
  • Возможность задавать FILLFACTOR при ребилде индексов
  • Можно игнорировать read-only файловые группы при сканировании
  • Можно игнорировать обьекты на которые у нас нет ALTER прав

    Картинка с другого сайта.
  • 13 май 19, 11:13    [21883129]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    komrad
    Member

    Откуда: Msk -> Utrecht
    Сообщений: 4799
    Sergey Syrovatchenko,

    а DATA_COMPRESSION поддерживается?
    13 май 19, 11:44    [21883176]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Sergey Syrovatchenko
    Member

    Откуда: Харьков
    Сообщений: 29
    komrad
    DATA_COMPRESSION поддерживается?

    Да. Есть возможность вручную задавать компрессию для индекса, менять ROW -> PAGE, PAGE -> ROW, убирать вовсе и тд.
    Если это колумнстор, то там есть возможность его переводить в архивную колумнстор группу для большего уровня сжатия.
    13 май 19, 11:51    [21883185]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    zzzzzzzzzz
    Member

    Откуда:
    Сообщений: 310
    Mind
    zzzzzzzzzz
    пропущено...


    SQL Server пофигу на все ваши ссд и видимость быстрой работы
    Пруф пожалуйста?


    какой именно пруф?
    подумайте/погуглите/сравните конкретно с вашим случем...
    Если индех фрагментировался по какой-либо причине оптимизатор запросов перестанет его использовать и будет вам фуллскан. Может ССД и вытянет какое-то время несмотря на увеличенный и никому не нужный обмен с диском. А так база медленно но уверенно превратится в помойку



    https://sqlperformance.com/2017/12/sql-indexes/impact-fragmentation-plans
    https://www.sqlskills.com/blogs/jonathan/does-index-fragmentation-matter-with-ssds/
    https://sqlperformance.com/2017/12/sql-indexes/impact-fragmentation-planshttps://www.sqlservercentral.com/forums/reply/1379912
    13 май 19, 18:31    [21883669]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    zzzzzzzzzz
    Member

    Откуда:
    Сообщений: 310
    +
    https://sqlperformance.com/2014/11/io-subsystem/knee-jerk-performance-tuning-just-add-ssd
    13 май 19, 18:33    [21883674]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Mind
    Member

    Откуда: Лучший город на Земле
    Сообщений: 2236
    zzzzzzzzzz
    Mind
    пропущено...
    Пруф пожалуйста?

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

    Для начала, на внешнюю фрагментацию оптимизатору пофигу, к тому же ему негде ее взять. Остается внутренняя или заполненность страниц. Если речь про поиск по индексу, то вообще побоку что там с заполненностью страниц. Ну будет индекс на 30% больше и что? Как это на стоимость то повлияет? Количество логических чтений то не поменяется.
    Если речь про скан индекса vs скан таблицы, то расскажите мне какая заполненность страниц должна быть у индекса чтобы он стал больше чем таблица? Даже в самом вырожденном случае если таблица очень узкая из 2х колонок, чтобы индекс стал больше таблицы заполненность должна упасть ниже 50% что по факту просто невозможно!
    14 май 19, 09:34    [21884060]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Mind
    Member

    Откуда: Лучший город на Земле
    Сообщений: 2236
    zzzzzzzzzz
    https://sqlperformance.com/2017/12/sql-indexes/impact-fragmentation-plans
    https://www.sqlskills.com/blogs/jonathan/does-index-fragmentation-matter-with-ssds/
    https://sqlperformance.com/2017/12/sql-indexes/impact-fragmentation-planshttps://www.sqlservercentral.com/forums/reply/1379912
    Самый первый комментарий от весельчака Брента порадовал: "the fragmented query runs FASTER, not slower"

    Вторая ссылка, для вырожденного примера с равнораспределенным ключем и сканом таблицы: " The actual runtimes of the two tests were nearly identical, and often flipped back and forth between which one took a few milliseconds longer than the other to complete for this demo. "
    Возможно если база используется как data warehouse и в ней много сканов то может иметь смысл дефрагментировать, но не для OLTP нагрузки.

    Аргументы Пола по сути противоречат друг другу:
    "1. SSDs in no way stop the cause of index fragmentation: page splits from pages needing free space for a random insert or row size increase. A page split generates the same amount of transaction log, resource usage, and potential thread waits regardless of where the data/log files are stored.
    2. Index fragmentation includes having many data/index pages with low page density (i.e. lots of empty, free space). Do you really want your expensive SSDs storing lots of empty space? SSDs don’t help here at all."
    Чтобы избавиться от #1 (page splits) нужно по сути делать ребилд с fillfactor ниже 100, но сколько? 95, 90, 80? Если сделать слишком высокий то страницы быстро заполнятся и пойдут опять таки page splits, а если низкий, то чем ниже мы делаем fillfactor, тем сильнее получается фрагментация сразу после дорогостоящей операции ребилда! И таким образом получаем таки "low page density" прям по #2. Ну или я не так его понял.

    Я не против обслуживания индексов как такового, я просто про то что в большинстве случаев ребилды всего подряд по бездумному правилу 5% - 30% не имеют особого смысла.
    14 май 19, 10:12    [21884094]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Александр Гладченко
    Member

    Откуда:
    Сообщений: 10674
    Блог
    Добавьте ещё большой и красный баннер перед началом работы, что если данные на SSD ни в коем случае не делать REBUILD. Это совершенно напрасная операция (ввиду алгоритмов рассеяния блоков в логике работы SSD), которая приводит только к преждевременному исчерпанию ресурса диска.
    После ребилда нужно делать обновление статистики.
    14 май 19, 12:08    [21884249]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Sergey Syrovatchenko
    Member

    Откуда: Харьков
    Сообщений: 29
    Александр Гладченко
    После ребилда нужно делать обновление статистики.

    Это вы в контексте того, что после ребилда делается FULL обновление статистики, а нужно делать какое-то другое?
    14 май 19, 12:52    [21884310]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Александр Гладченко
    Member

    Откуда:
    Сообщений: 10674
    Блог
    Sergey Syrovatchenko,
    Я про это: https://blogs.msdn.microsoft.com/psssql/2015/03/06/does-rebuild-index-update-statistics/
    14 май 19, 13:33    [21884365]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Sergey Syrovatchenko
    Member

    Откуда: Харьков
    Сообщений: 29
    Александр Гладченко, то есть необходимо предусмотреть ситуацию при ребилде кластерного индекса насильно еще обновлять все user_created и auto-created статистику на таблице?
    Опционально это сделать не проблема, но как быть тогда с секционированными таблицами?
    14 май 19, 13:38    [21884372]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Александр Гладченко
    Member

    Откуда:
    Сообщений: 10674
    Блог
    Sergey Syrovatchenko,
    Дефрагментация на листовом уровне сломает все статистики, это будет особенно заметно на больших таблицах, где даже "новомодное" автообновление статистики не спасает от проблем с правильной статистикой для оптимизатора. В таких случаях часто помогает только обновление некластерных индексов с полным сканированием.
    Секционирование вносит ещё большее разнообразие вариантов дефрагментации - будет интересно понаблюдать, как Вы с этим справитесь :) ...есть ведь ещё и фильтрованные индексы, и много чего ещё есть....
    14 май 19, 14:21    [21884449]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Sergey Syrovatchenko
    Member

    Откуда: Харьков
    Сообщений: 29
    Александр Гладченко, исходя из такого кейса предусмотреть возможность вместе с кластерным индексом ребилдить и все некластерные?
    Если я вас правильно понял.

    Текущий функционал по обновлению статистики работает только для таблиц где нет секционирования.
    Думаю в дальшейнем можно будет заморочится и сделать все по феншую, но тут вопрос стоит ли?
    Насколько часто нужно по секциям обновлять статистику? У меня в практике такое редко было.
    Чаще всего, фильтрованную статистику только отдельно обновлял построенное по выбранным секциям.
    14 май 19, 14:28    [21884456]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Александр Гладченко
    Member

    Откуда:
    Сообщений: 10674
    Блог
    Sergey Syrovatchenko
    Александр Гладченко, исходя из такого кейса предусмотреть возможность вместе с кластерным индексом ребилдить и все некластерные?
    Если я вас правильно понял.

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


    Я не призывал ребилдить все некластерные индексы. Речь шла о статистиках.
    Секционирование зависит от функции секционирования, а она может быть далеко не тривиальной и "работать" может не одна секция...
    В природе ещё встречаются всякие распределённые секционированные представления, что будет со статистикой на их индексах, если отребилдить кластерный, который в основе представления - задайтесь таким вопросом...
    Вопрос в том, кто будет отвечать на вопросы пользователей, когда ребилд индекса, выполненный с помощью Вашей утилиты, приведёт к простою промышленной базы? ...проконсультируйтесь на эту тему с хорошим юристом в этой области...
    14 май 19, 14:39    [21884480]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    zzzzzzzzzz
    Member

    Откуда:
    Сообщений: 310
    [quot Mind]
    >>Я не против обслуживания индексов как такового, я просто про то что в большинстве случаев ребилды всего подряд по бездумному правилу 5% - 30% не имеют особого смысла.
    Я с вами уже почти согласен :) Зависит от конкретного случая.

    zzzzzzzzzz
    . Ну будет индекс на 30% больше и что? Как это на стоимость то повлияет? Количество логических чтений то не поменяется.

    при выборе индекса опимизатор стотрит на статистику и количество страниц индекса которое вырастет при фрагментации (где-то было в ссылках выше). Само абсолютное значение фрагментации в %% не смотрит
    14 май 19, 14:53    [21884498]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    zzzzzzzzzz
    Member

    Откуда:
    Сообщений: 310
    zzzzzzzzzz
    (где-то было в ссылках выше).


    https://sqlperformance.com/2017/12/sql-indexes/impact-fragmentation-plans
    в комментариях
    14 май 19, 17:02    [21884620]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Mind
    Member

    Откуда: Лучший город на Земле
    Сообщений: 2236
    zzzzzzzzzz
    Mind
    >>Я не против обслуживания индексов как такового, я просто про то что в большинстве случаев ребилды всего подряд по бездумному правилу 5% - 30% не имеют особого смысла.

    Я с вами уже почти согласен :) Зависит от конкретного случая.

    пропущено...

    при выборе индекса опимизатор стотрит на статистику и количество страниц индекса которое вырастет при фрагментации (где-то было в ссылках выше). Само абсолютное значение фрагментации в %% не смотрит
    Еще раз. Это имеет значение только при скане индекса, потому что только тогда нужно прочитать все страницы, следовательно оценка расчитывается как [количество страниц в индексе] * [magic number]. Если же у нас поиск, то по барабану, ибо общее количество страниц в индексе никак не учитывается, какая разницы у вас индекс 10Гб или 15Гб если вам нужно прочитать 1 строку? Возможно на маленьких индексах будет на одно нелистовое чтение больше, но это во-первых, ничтожное падение производительности, во-вторых на больших таблицах даже такой разницы не будет.

    Короче, если у вас огромное хранилище данных и много сканов, то возможно стоит дефрагментировать, лучше во время загрузки данных в то хранилище :)
    Если у вас огромная, но правильно спроектированная OLTP база, и сканов нет, то смысл создавать лишнюю нагрузку без очевидного выигрыша, особенно если это 24/7 и нет больших технических окон? Если же есть сканы, тогда возможно лишняя нагрузка от сканов перевешивает ребилды, но тоже не факт. Как было написано в одной из статей, SSD может сгладить негативный эффект от фрагментированных индексов если дисковая не сильно нагружена.
    14 май 19, 21:53    [21884807]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Sergey Syrovatchenko
    Member

    Откуда: Харьков
    Сообщений: 29
    Тут коллега интересную идею предложил. Прикрутить конструктор условий, т.е. есть грид в котором мы задаем народ из условий и выбираем действие для исправления этой ситуации.

    Была ли такая штука полезной? Может есть идеи как по удобнее реализовать.
    15 май 19, 17:02    [21885580]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Ролг Хупин
    Member

    Откуда: Чебаркуль
    Сообщений: 2569
    Sergey Syrovatchenko
    Тут коллега интересную идею предложил. Прикрутить конструктор условий, т.е. есть грид в котором мы задаем народ из условий и выбираем действие для исправления этой ситуации.

    Была ли такая штука полезной? Может есть идеи как по удобнее реализовать.


    как говорят(ц) не тот народ попался в гриде
    16 май 19, 08:33    [21885850]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
    Все форумы / Microsoft SQL Server Ответить