powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
213 сообщений из 213, показаны все 9 страниц
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39810271
Так уж исторически сложилось, что долгое время участвовал в разработке системных тулов для обслуживания SQL Server.
За это время накопилось много идей и на определенном этапе захотелось сделать что-то свое.

В результате получилось приложение, которое позволяет обслуживать индексы через удобный UI.
За основных конкурентов брались платные аналоги от компаний RedGate / Devart (155 $ / 99 $ на текущий момент).

Ключевые особенности SQL Index Manager (1.0.0.31):

Оптимизированный алгоритм получения фрагментированных индексов * * *

Возможность обслуживания нескольких баз данных за раз

Автоматический выбор действия для индексов исходя из выбранных настроек

Поддержка глобального поиска и сложной фильтрации для более удобной аналитики

Большое число настроек и полезной информации об индексах

Автоматическая генерация скриптов по обслуживанию индексов

Поддержка обслуживания кучи и колумнсторов

Возможность включать сжатие индексов и обновление статистики вместо ребилда

Поддержка всех редакций SQL Server 2008+ и Azure SQL Database

* * *
RedGate SQL Index Manager v1.1 работает простым перебором, т. е. получает весь список индексов.
Потом в цикле отправляет запрос на получения уровня фрагментации для каждого индекса.
В итоге если база удаленная и содержит много мелких индексов, то это может затянуться на долгое время.

dbForge Index Manager for SQL Server v1.10.27 от Devart получает все большой охапкой.
Затем уже на клиенте отфильтровывает лишнее. Как минус всегда будут лишние дисковые операции при сканировании индексов.
Не скажу, что это совсем уж плохо, потому что можно лучше...

Исходя из того, что данные в sys.dm_db_index_physical_stats не кешируется SQL Server на постоянной основе,
минимизирование физических чтений при получении фрагментации индексов было одной из приоритетных задач при разработке.

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

В ближайших планах добавить:


Поддержку командной строки

Получение более глубокой информации об индексах

Возможность экспорта результатов

Кастомизация интерфейса

На данный момент и в дальнейшем, SQL Index Manager полностью бесплатный .

Последнюю версию приложения можно скачать по этой ссылке , а все исходники лежат на GitHub .





Продукт хочется развивать и делать более функциональным, поэтому буду рад критике и предложениям.
Пишите или в этот топик или по почте, который указан в профиле.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39810339
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[ 17:19:48.733 ] Log folder: D:\Distr\SQLIndexManager
[ 17:20:02.830 ] Current host: xxx | SQL Server 2016 SP2 (13.0.5153.0) Enterprise Edition: Core-based Licensing (64-bit)
[ 17:20:03.088 ] Elapsed time: 00:00:00:237. Refresh databases failed
Arithmetic overflow error converting expression to data type int.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39810436
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

А что кто то еще дефрагментирует индексы? А зачем? Еще и тул для этого писать. Создавать лишнюю нагрузку во время получения данных о фрагментации, а потом еще во время ребилда генерить кучу логов и потенциально отправлять их на secondary сервера. И все ради того чтобы получить чуть чуть лучше перформанс?

Может ради пустого места в индексах и можно заморочиться, но не ради фрагментации как таковой. Пустое место критично хотя бы потому что память занимает.
Можно чтобы тул делал так? Несколько раз в течение дня опрашивал буферы дынных и записывал в каких индексах много пустого места, а потом во время maintenance window их реорганизовывал.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39810453
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MindМожно чтобы тул делал так? Несколько раз в течение дня опрашивал буферы дынных и записывал в каких индексах много пустого места, а потом во время maintenance window их реорганизовывал.
это, кстати, хорошая мысль - реорганизация горячих таблиц/индексов
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39810466
Выложил версию 1.0.0.32:

Исправлена ошибка "Arithmetic overflow error converting expression to data type int" при получении списка баз

Возможность кастомизации грида (скрывать/показывать столбцы и менять их расположение)

MindМожет ради пустого места в индексах и можно заморочиться, но не ради фрагментации как таковой. Пустое место критично хотя бы, потому что память занимает.
Тут я с Вами солидарен. Из этих соображений я и добавил отдельную колонку Unused Place по которой можно быстро найти индексы, где много свободного места.

MindНесколько раз в течение дня опрашивал буферы дынных и записывал в каких индексах много пустого места, а потом во время maintenance window их реорганизовывал.
Идея и вправду хорошая. Когда будет командная строка, то можно будет добавить опцию "показывать индексы, где много свободного места" и задавать какой-то %.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39810775
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неплохо, но есть и фигня вообще-то
Log folder: C:\WINDOWS\system32

Неплохо бы сделать так:
1. настраивать в приложении есть ли лог, куда лог и т.д.
2. показывать лог в приложении, а не искать потом х.п. где
3. сделать лог как, например, сделано в log4net, тогда можно настроить хоть в сеть, хоть в файлы и т.д.

Попытался подсунуть битую базу, он смог вытащить 3 записи об индексах в грид, а реально там сотня.
Может были ошибки, так не видно.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39810821
Andrey Sribnyak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей, полезная утилита.

Можно ли задать Fillfactor?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39810888
Andrey Sribnyak, как бы вы пользовались этой фичей? Есть мысль добавить возможность при любом ребилде задавать свой уровень филл фактора и, отдельно, чтобы была возможность его в 0 выставлять. Сейчас мы просто наследуем настройки сервера.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39810952
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradMindМожно чтобы тул делал так? Несколько раз в течение дня опрашивал буферы дынных и записывал в каких индексах много пустого места, а потом во время maintenance window их реорганизовывал.
это, кстати, хорошая мысль - реорганизация горячих таблиц/индексов
Я вижу как минимуму несколько плюсов:
1. Легко получить данные по свободному месту, все что нужно уже в памяти. Не нужно сканировать таблицы, пусть даже и в sample (что я так подозреваю тул и делает) создавая тем самым лишнюю рандомную IO нагрузку
2. Обрабатываем только то что обычно попадает в память. Лопатить то что большую часть времени лежит на диске смысла особого нет
3. Если делать реорганизацию сразу то она должна быть существенно дешевле потому что часть данных уже в памяти.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811101
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SyrovatchenkoСейчас мы просто наследуем настройки сервера.И это верно.

Могу предложить сырую идею. Мастер вычисления филлфактора. Для кластерного суррогатного наиболее вероятно- 100%. Для остальных попытаться вычислить исходя:
из отсутствия записей- активность delete;

из распределения существующих полей датывремени (догадываясь о возможных default=getdate) и/или timestamp активность update;

из типов данных, например, учитывая "произвол" гуидов.

Можно даже спросить у пользователя, какие поля преимущественно равномерно возрастают исходя из бизнес-процессов.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811168
Выложил версию 1.0.0.33 :

Добавил экспорт результатов в Excel, CSV и TXT

Возможность при ребилде сбрасывать FILLFACTOR в 0

Добавил новые колонки с полезной информацией об индексах

Кастомизация интерфейса



Ролг ХупинПопытался подсунуть битую базу, он смог вытащить 3 записи об индексах в грид, а реально там сотня.
Может были ошибки, так не видно.
Добавил обработку ошибок. Если есть возможность скинуть для тестов битую базу, то буду благодарен.

Ролг Хупиннастраивать в приложении есть ли лог, куда лог и т.д.
Постараюсь в скором времени сделать.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811179
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

не могу дать битую базу, Заратустра не позволяет, база клиентская.
Но вы можете сделать из своей рабочей битую, это делается не сложно.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811182
Ролг Хупин, а какого рода страницы были побиты в Вашей базе? Только INROW? Или еще были затронуты PSF и тд?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811262
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

Сергей, здорово, спасибо, класс!
Поддержка командной строки была бы очень в тему, что можно было бы создавать агент-джобы, и при наличии сайлент-режима работы приложения, - зашедулить эти вызовы приложения с параметрами на перманентной основе

P.S. - не рассматривали кстати в плане определенного конкурента по maintenance'у индексов и прочего и такой солюшн - Ola Hallengren's "Maintenance Solution"?

https://ola.hallengren.com/
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811268
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMishaP.S. - не рассматривали кстати в плане определенного конкурента по maintenance'у индексов и прочего и такой солюшн - Ola Hallengren's "Maintenance Solution"?

https://ola.hallengren.com/

имхо, они не конкуренты - здесь бинарник и правит программист, у Ол(-ы/-и) t-sql код, который может допилить под собственные нужды даже ДБА

кстати, Sergey Syrovatchenko, а как с параллельной работой этого приложения?
допустим, случай когда два экземпляра gui/commandline обрабатывают одну базу одновременно (в силу разных причин)?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811281
komradкак с параллельной работой этого приложения?
допустим, случай когда два экземпляра gui/commandline обрабатывают одну базу одновременно (в силу разных причин)?

Если мы говорим о сканирование индексов на предмет фрагментации, то запросы друг друга не блокируют. А вот если брать обслуживание, то блокировки будут (Sch-M чаще всего, когда пытаемся один и тот же индекс обслуживать).
Также не забываем о Sch-S, когда мы не можем ничего делать с индексом до тех пор пока из него происходит чтение каким-либо запросом.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811295
Есть еще пара идей.

Сейчас список индексов мы получаем полностью без проверки на то если ли права эти индексы обслуживать.
Добавить ли опцию "показывать только обьекты на которые есть права"?

Нужно ли добавить возможность "отключать индекс"?
Скажем если мы видим что индекс не используется на основе данных с sys.dm_db_index_usage_stats.
То как это вьюха работает уже другой вопрос.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811332
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradимхо, они не конкуренты - здесь бинарник и правит программист, у Ол(-ы/-и) t-sql код, который может допилить под собственные нужды даже ДБА


нуу, вопрос открытости - он скорее вещь интимная, скажем, по-сути - для пользователя не важно, что скрыто за блэк-боксом, главное, что есть функционал А с параметрами Б, который надо запустить для получения результата С

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

В этом ракурсе, не интерактивном использовании, - считаю будущий режим командной строки и решение Ola конкурентами
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811334
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMisha,

авторпо-сути - для пользователя не важно, что скрыто за блэк-боксом, главное, что есть функционал А с параметрами Б
потом просыпается секьюрити и здравый смысл с вопросом, а что ей запретит сделать, что угодно
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811336
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

А что помешает, в таком случае, в обычный сиквельный джоб или план обслуживания из коробки - внедрить скрипт, или вызов батника, или powerShell'а, или .NET-модуля, который имперсонируя контекст безопасности службы sql-agent'а творить все, что только душа пожелает на локальной и/или удаленной машинах/сети?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811337
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMishaTaPaK,

А что помешает, в таком случае, в обычный сиквельный джоб или план обслуживания из коробки - внедрить скрипт, или вызов батника, или powerShell'а, или .NET-модуля, который имперсонируя контекст безопасности службы sql-agent'а творить все, что только душа пожелает на локальной и/или удаленной машинах/сети?
что за бред я прочитал
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811346
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

ахахах, всмысле?? :)

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

Предлагаю оставить на данный момент вопрос целесообразности и дизайна - случаи бывают разные :)
Главное - что технически возможность есть, и она не прикрыта

Да и Ola тот же - может через sqlcmd работать, или все тоже так скажем API через хранимые процедуры
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811352
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMishaTaPaK,

ахахах, всмысле?? :)

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

Предлагаю оставить на данный момент вопрос целесообразности и дизайна - случаи бывают разные :)
Главное - что технически возможность есть, и она не прикрыта

Да и Ola тот же - может через sqlcmd работать, или все тоже так скажем API через хранимые процедуры
что за бред часть 2.

Вас дружно спустят в подвал и "ахха" будет иметь несколько другой тон, коробка с доступом уровня управления сервером под это будут подписываться или дети или производитель коробки будет иметь достаточно серъёзную репутацию и возможности связанные как договорами так и юридическими последствиями
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811353
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

Да, окей, спасибо, благодарю за мнение, всех благ, ну и т.д. и т.п.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811374
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKкоробка с доступом уровня управления сервером под это будут подписываться или дети или производитель коробки будет иметь достаточно серъёзную репутацию и возможности связанные как договорами так и юридическими последствиями


Ну и все же, возвращаясь к вопросу секурности - никто же не говорит что нужно давать права enterprise-админа учётке, из под которой ранятся сиквельные службы? Все по правилам и гайдам Microsoft - права пользователя в ОС, необходимые вручную заданные разрешения в локальной GPO на закрепление страниц в памяти и прочее, NTFS-права на папки с базами, на сетевые шары

И что реально плохого в том, что есть, скажем, составной сиквельный джоб, в котором на шаге №2 надо отпарсить CSV-файлы при помощи T-SQL (не криминал, надеюсь, в вашем представлении, кстати?), соответственно на шаге №1 мы вызываем cmd для того, чтоб скопировать эти файлы из удаленной шары на, к примеру, локальную машину в stage-область, и сделать это именно при помощи шага уровня MSSQL agent job? Или надо переложить этот шаг на уровень внешнего модуля, - к примеру виндового джоба? Который будет синхронизирован по времени с сиквельным? И заранее еще, чтоб мало-ли по сети будет задержка и чтобы сиквельный джоб не начался раньше или во время процесса копирования? И потом еще синхронизацию и condition-логику между ними?
Вот это реально хреновый дизайн, сложно поддерживать, документировать и прочее
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811600
zzzzzzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MindSergey Syrovatchenko,

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

SQL Server пофигу на все ваши ссд и видимость быстрой работы
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811617
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zzzzzzzzzzMindSergey Syrovatchenko,

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

SQL Server пофигу на все ваши ссд и видимость быстрой работыПруф пожалуйста?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39811629
Выложил версию 1.0.0.34 :

Добавил вывод лога в отдельном гриде

Возможность отключать некластерные индексы

Исправил мелкие ошибки при выделении

...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812324
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812342
andy st, а можно узнать версию SQL Server и compatibility level. Как я понял это 2008R2?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812357
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenkoandy st, а можно узнать версию SQL Server и compatibility level. Как я понял это 2008R2?
Код: sql
1.
2.
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
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812396
Выложил версию 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 прав

...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812428
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

а DATA_COMPRESSION поддерживается?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812433
komradDATA_COMPRESSION поддерживается?
Да. Есть возможность вручную задавать компрессию для индекса, менять ROW -> PAGE, PAGE -> ROW, убирать вовсе и тд.
Если это колумнстор, то там есть возможность его переводить в архивную колумнстор группу для большего уровня сжатия.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812636
zzzzzzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mindzzzzzzzzzzпропущено...


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
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812639
zzzzzzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812800
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zzzzzzzzzzMindпропущено...
Пруф пожалуйста?
Если индех фрагментировался по какой-либо причине оптимизатор запросов перестанет его использовать и будет вам фуллскан. Фу какой фрагментированный индекс. Я не буду его использовать.

Для начала, на внешнюю фрагментацию оптимизатору пофигу, к тому же ему негде ее взять. Остается внутренняя или заполненность страниц. Если речь про поиск по индексу, то вообще побоку что там с заполненностью страниц. Ну будет индекс на 30% больше и что? Как это на стоимость то повлияет? Количество логических чтений то не поменяется.
Если речь про скан индекса vs скан таблицы, то расскажите мне какая заполненность страниц должна быть у индекса чтобы он стал больше чем таблица? Даже в самом вырожденном случае если таблица очень узкая из 2х колонок, чтобы индекс стал больше таблицы заполненность должна упасть ниже 50% что по факту просто невозможно!
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812819
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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% не имеют особого смысла.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812909
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте ещё большой и красный баннер перед началом работы, что если данные на SSD ни в коем случае не делать REBUILD. Это совершенно напрасная операция (ввиду алгоритмов рассеяния блоков в логике работы SSD), которая приводит только к преждевременному исчерпанию ресурса диска.
После ребилда нужно делать обновление статистики.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812950
Александр ГладченкоПосле ребилда нужно делать обновление статистики.
Это вы в контексте того, что после ребилда делается FULL обновление статистики, а нужно делать какое-то другое?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812989
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39812995
Александр Гладченко, то есть необходимо предусмотреть ситуацию при ребилде кластерного индекса насильно еще обновлять все user_created и auto-created статистику на таблице?
Опционально это сделать не проблема, но как быть тогда с секционированными таблицами?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39813035
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,
Дефрагментация на листовом уровне сломает все статистики, это будет особенно заметно на больших таблицах, где даже "новомодное" автообновление статистики не спасает от проблем с правильной статистикой для оптимизатора. В таких случаях часто помогает только обновление некластерных индексов с полным сканированием.
Секционирование вносит ещё большее разнообразие вариантов дефрагментации - будет интересно понаблюдать, как Вы с этим справитесь :) ...есть ведь ещё и фильтрованные индексы, и много чего ещё есть....
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39813038
Александр Гладченко, исходя из такого кейса предусмотреть возможность вместе с кластерным индексом ребилдить и все некластерные?
Если я вас правильно понял.

Текущий функционал по обновлению статистики работает только для таблиц где нет секционирования.
Думаю в дальшейнем можно будет заморочится и сделать все по феншую, но тут вопрос стоит ли?
Насколько часто нужно по секциям обновлять статистику? У меня в практике такое редко было.
Чаще всего, фильтрованную статистику только отдельно обновлял построенное по выбранным секциям.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39813048
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SyrovatchenkoАлександр Гладченко, исходя из такого кейса предусмотреть возможность вместе с кластерным индексом ребилдить и все некластерные?
Если я вас правильно понял.

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

Я не призывал ребилдить все некластерные индексы. Речь шла о статистиках.
Секционирование зависит от функции секционирования, а она может быть далеко не тривиальной и "работать" может не одна секция...
В природе ещё встречаются всякие распределённые секционированные представления, что будет со статистикой на их индексах, если отребилдить кластерный, который в основе представления - задайтесь таким вопросом...
Вопрос в том, кто будет отвечать на вопросы пользователей, когда ребилд индекса, выполненный с помощью Вашей утилиты, приведёт к простою промышленной базы? ...проконсультируйтесь на эту тему с хорошим юристом в этой области...
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39813054
zzzzzzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Mind]
>>Я не против обслуживания индексов как такового, я просто про то что в большинстве случаев ребилды всего подряд по бездумному правилу 5% - 30% не имеют особого смысла.
Я с вами уже почти согласен :) Зависит от конкретного случая.

zzzzzzzzzz. Ну будет индекс на 30% больше и что? Как это на стоимость то повлияет? Количество логических чтений то не поменяется.
при выборе индекса опимизатор стотрит на статистику и количество страниц индекса которое вырастет при фрагментации (где-то было в ссылках выше). Само абсолютное значение фрагментации в %% не смотрит
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39813126
zzzzzzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zzzzzzzzzz (где-то было в ссылках выше).

https://sqlperformance.com/2017/12/sql-indexes/impact-fragmentation-plans
в комментариях
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39813236
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zzzzzzzzzzMind>>Я не против обслуживания индексов как такового, я просто про то что в большинстве случаев ребилды всего подряд по бездумному правилу 5% - 30% не имеют особого смысла.
Я с вами уже почти согласен :) Зависит от конкретного случая.

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

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

Короче, если у вас огромное хранилище данных и много сканов, то возможно стоит дефрагментировать, лучше во время загрузки данных в то хранилище :)
Если у вас огромная, но правильно спроектированная OLTP база, и сканов нет, то смысл создавать лишнюю нагрузку без очевидного выигрыша, особенно если это 24/7 и нет больших технических окон? Если же есть сканы, тогда возможно лишняя нагрузка от сканов перевешивает ребилды, но тоже не факт. Как было написано в одной из статей, SSD может сгладить негативный эффект от фрагментированных индексов если дисковая не сильно нагружена.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39813697
Тут коллега интересную идею предложил. Прикрутить конструктор условий, т.е. есть грид в котором мы задаем народ из условий и выбираем действие для исправления этой ситуации.

Была ли такая штука полезной? Может есть идеи как по удобнее реализовать.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39813834
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SyrovatchenkoТут коллега интересную идею предложил. Прикрутить конструктор условий, т.е. есть грид в котором мы задаем народ из условий и выбираем действие для исправления этой ситуации.

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

как говорят(ц) не тот народ попался в гриде
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39813853
Ролг Хупин, реально классно что на форуме нельзя править сообщения. Иногда такие перлы попадаются )))

Если же серьезно, то появилась идея сделать тул более функциональным и кастомизируемым.
Планирую добавить контрол в котором можно задавать набор условий и действие которое нужно сделать над индексом, когда эти условия выполняются. В порядке определенного приоритета.

И тут есть пара противоречий. Размер индекса (с ... по ... ) является обязательным параметром. Остальные условия можно кастомизировать.
Нужно ли уровень фрагментации делать обязательным параметром для каждого условия?

Примеры таких условий может кто-то предложить? Скажем когда выгоднее делать обновление статистики а не ребилд, потому что все очень сильно зависит от системы и нагрузки.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39814329
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SyrovatchenkoНа данный момент и в дальнейшем, SQL Index Manager полностью бесплатный . DevExpress тоже бесплатный?

Sergey SyrovatchenkoMindМожет ради пустого места в индексах и можно заморочиться, но не ради фрагментации как таковой. Пустое место критично хотя бы, потому что память занимает.
Тут я с Вами солидарен. Из этих соображений я и добавил отдельную колонку Unused Place по которой можно быстро найти индексы, где много свободного места.
Код: sql
1.
UnusedPagesCount = CASE WHEN ABS(a.ReservedPages - a.UsedPages) > 32 THEN a.ReservedPages - a.UsedPages ELSE 0 END


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

Sergey SyrovatchenkoНужно ли уровень фрагментации делать обязательным параметром для каждого условия?Можно по fill factor (avg_page_space_used_in_percent) ребилдить, не обязательно по фрагментации. Но у вас его нету, да и считать затратно.

Sergey SyrovatchenkoСкажем когда выгоднее делать обновление статистики а не ребилд, потому что все очень сильно зависит от системы и нагрузки.Это так то вообще не взаимозаменяемые операции. Статистику надо всегда пересчитывать, кроме особо экзотических случаев.

Sergey SyrovatchenkoПримеры таких условий может кто-то предложить?В том то и проблема, иметь такую функциональность конечно хорошо, но вот кто и как ею будет пользоваться? Если бы тул сам на основе анализа предыдущих ребилдов, потраченного времени, фрагментации до и после, периодичности ребилдов, статистики использования индексов и прочих разных данных предлагал бы правила и опции ребилда и как часто и когда его лучше делать, то был бы смысл. А так, кто все эти правила будет настраивать и кто гарантирует что они оптимальные? Это либо пальцем в небо, либо нужно потратить кучу времени на весь этот анализ вручную. А выхлоп какой? Будет ли разница по сравнению с таким подходом, или тупым в лоб или вообще без всякого ребилда? Как эту разницу измерять? В том что уменьшится количество page splits?
Вот скажем та же опция задавать fill factor вручную. Для 95% индексов самый лучший fill factor это дефолтный. Ребилдить все с fill factor = 80 это несусветная глупость. Для того чтобы настроить fill factor для каждого индекса индивидуально нужно потратить кучу времени. Есть ли смысл это делать?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39814400
MindDevExpress тоже бесплатный?
Я вроде DevEx еще никому не впаривал :)

У самого есть лицензия (правда старая). Тем более на библиотеки не распространяются ограничения если продукт был сделан на основе лицензии.
Тем кому эти компоненты не нравятся можно прикрутить хоть WPF хоть что угодно другое.
К слову это тоже в будующих планах - свои контролы сделать.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39814531
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SyrovatchenkoMindDevExpress тоже бесплатный?
Я вроде DevEx еще никому не впаривал :)

У самого есть лицензия (правда старая). Тем более на библиотеки не распространяются ограничения если продукт был сделан на основе лицензии.
Тем кому эти компоненты не нравятся можно прикрутить хоть WPF хоть что угодно другое.
К слову это тоже в будующих планах - свои контролы сделать.

От DevEx надо избавляться, тем более, что приложение мало контролов использует, грид, еще 2-3.
Можно прикрутить, что-то простое и бесплатное.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39814562
Ролг ХупинОт DevEx надо избавляться
Увы, тут вы правы. Не все вещи в DevEx хорошие. Возможно в будующем как коммандную строку сделаю, то на WPF переведу проект.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39814767
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SyrovatchenkoMindDevExpress тоже бесплатный?
Я вроде DevEx еще никому не впаривал :)

У самого есть лицензия (правда старая).Я за вас рад...
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39814770
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mind,

Так и не понял чем плох devexpres... Немного используем telerik под win и web. Лицензия все позволяет
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39814781
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKMind,

Так и не понял чем плох devexpres... Немного используем telerik под win и web. Лицензия все позволяетТак он бесплатный или нет? Мне лицензию нужно покупать чтобы скомпилировать бесплатную программу? Или мне все переписывать?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39814783
Mind, никаких лицензий не нужно. Я специально все нужные либы приложил, чтобы можно было скомпилить прогу. Сорри, я просто вначале не понял вашего вопроса относительно DevEx.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39815024
Выложил версию 1.0.0.36 :

Добавил новые поля в гриде (операции Seeks/Scans/Lookups в разрезе индекса)

При выборе баз показывается Recovery Model в гриде

Возможность автоматически задавать DATA_COMPRESSION для индексов при ребилде

Возможность фильтрации скана только по выбранным схемам

Фикс при фильтрации не учитывались схемы с юникодными именами



Отдельно вопрос. Нужно ли показывать инфу о том какие индексы имеют статус NORECOMPUTE?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816669
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,
первое-программа просто бомба, применяю на работе как контроль над автоматизированными методами оптимизации статистик

Детальный разбор самого проекта, а также его работа через профайлер показал следующие моменты:
1) в запросе:
SELECT * FROM sys.databases WHERE DB_NAME() not in ('master', 'tempdb', 'model', 'msdb', 'mssqlsystemresource');
нужно DB_Name() сменить на [name]:
SELECT * FROM sys.databases WHERE [name] not in ('master', 'tempdb', 'model', 'msdb', 'mssqlsystemresource');
в связи с ошибкой в коде происходит обслуживание и системных БД

2) в запросе:
IF OBJECT_ID(''tempdb.dbo.#AllocationUnits'') IS NOT NULL
DROP TABLE #AllocationUnits

CREATE TABLE #AllocationUnits (
ContainerID BIGINT PRIMARY KEY
, ReservedPages BIGINT NOT NULL
, UsedPages BIGINT NOT NULL
)

INSERT INTO #AllocationUnits (ContainerID, ReservedPages, UsedPages)
SELECT [container_id]
, SUM([total_pages])
, SUM([used_pages])
FROM sys.allocation_units WITH(NOLOCK)
GROUP BY [container_id]
HAVING SUM([total_pages]) BETWEEN @MinIndexSize AND @MaxIndexSize;

скорее всего нужно учитывать неудаленные, т е у которых [type]<>0
источник: https://docs.microsoft.com/ru-ru/sql/relational-databases/system-catalog-views/sys-allocation-units-transact-sql?view=sql-server-2017

больше вопросов не возникло и проблем не обнаружил

Теперь пожелания:
1) сделать возможным обслуживание системных БД (master, msdb)
2) сделать возможным выборочно обновлять статистики не только для индексов и также разными способами (полностью обновлять или частично)
3) сделать возможным не только выбирать БД, но и разные сервера (это очень удобно, когда много экземпляров скулей).

Также скачанный проект не компилируется, выдавая код ошибки, который расшифровывается как проблема с лицензией компонентов DevExpress
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816671
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,

и еще хорошо бы аналогичное по анализу и оптимизации существующих статистик
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816678
ЕвгенийGEM SELECT * FROM sys.databases WHERE DB_NAME() not in ('master', 'tempdb', 'model', 'msdb', 'mssqlsystemresource');
Запрос точно не мой :)

У меня в коде базы получаются так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT DatabaseName = t.[name]
     , d.DataSize
     , d.LogSize
     , RecoveryModel = t.recovery_model_desc
FROM sys.databases t WITH(NOLOCK)
LEFT JOIN (
    SELECT [database_id]
         , DataSize = SUM(CASE WHEN [type] = 0 THEN CAST(size AS BIGINT) END)
         , LogSize  = SUM(CASE WHEN [type] = 1 THEN CAST(size AS BIGINT) END)
    FROM sys.master_files WITH(NOLOCK)
    GROUP BY [database_id]
) d ON d.[database_id] = t.[database_id]
WHERE t.[state] = 0
    AND t.[database_id] != 2
    AND ISNULL(HAS_DBACCESS(t.[name]), 1) = 1


ЕвгенийGEM скорее всего нужно учитывать неудаленные, т е у которых [type]<>0
Замечание важное. Погляжу как это затрагивает мою текущую логику

ЕвгенийGEM сделать возможным обслуживание системных БД (master, msdb)
То есть обслуживать системные обьекты? Потому как пользовательские обьекты в системных базах обслуживать можно.

ЕвгенийGEMсделать возможным выборочно обновлять статистики не только для индексов и также разными способами (полностью обновлять или частично)
В ближайших планах что-то сделать в этом направлении. Есть идея показывать статистику просто как отдельную строку и фильтровать по степени устаревания и тому сколько изменений было на уровне индекса.

ЕвгенийGEMсделать возможным не только выбирать БД, но и разные сервера (это очень удобно, когда много экземпляров скулей).
Увы это пока реализовать быстро не получится, но на перспективу учтем.

ЕвгенийGEMвыдавая код ошибки, который расшифровывается как проблема с лицензией компонентов DevExpress
Можно точное сообщение об ошибке показать. У меня просто с таким проблем не было на 2017й студии.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816797
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko, трассировка запускалась на изолированной среде, чтобы как раз исследовать все запросы от Вашей тулзы.
Потому все запросы от Вашей тулзы)
Лучше на Core переписать.
А в будущем сделать платную ветвь в стиле сервер-клиент на ASP.NET Core, куда добавить мониторинг подобный Spotlight и даже лучше)
Но вообще за тулзу больфуфий респект!)
Предлагаю код ошибки и прочие детали в личке обсудить
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816807
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko, еще вспомнил-лучше отсеивать отключенные индексы и те базы, которые недоступны на редактированине (как в целом БД, так и отдельный ее файл).
Не помню было ли в коде этл учтено.
И еще пока не разглядел-если индекс секционированный, то есть возможность выбирать какие секции и что с каждым делать и каким образом делать?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816823
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko, на счет фильтруемых индексов. Достаточно часто встречал, когда фильтруемый индекс непросто не используется оптимизатором, а даже через подсказки не может план построить и вылетает ошибка выполнения запроса. Аналогично и фидьтрация репликации слияния.
Потому уже выработался инстинкт-никаких фильтруемых индексов и реплик.
Надо-отдельная табдица или секции.
А для сложной и устойчивой реплики обычно используют сторонние тулзы или при возможности свою пилят (если конечно AlwaysOn недоступен или его недосиаточно по каким-то условиям)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816828
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT DB_NAME() as DB,
o.name AS ObjectName
, i.name AS IndexName
, i.index_id AS IndexID
, dm_ius.user_seeks AS UserSeek
, dm_ius.user_scans AS UserScans
, dm_ius.user_lookups AS UserLookups
, dm_ius.user_updates AS UserUpdates
,last_user_seek
,last_user_scan
,last_user_lookup
, p.TableRows
, 'DROP INDEX ' + QUOTENAME(i.name)
+ ' ON ' + QUOTENAME(s.name) + '.' + QUOTENAME(OBJECT_NAME(dm_ius.OBJECT_ID)) AS 'drop statement'
FROM sys.dm_db_index_usage_stats dm_ius
INNER JOIN sys.indexes i ON i.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = i.OBJECT_ID
INNER JOIN sys.objects o ON dm_ius.OBJECT_ID = o.OBJECT_ID
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
INNER JOIN (SELECT SUM(p.rows) TableRows, p.index_id, p.OBJECT_ID
FROM sys.partitions p GROUP BY p.index_id, p.OBJECT_ID) p
ON p.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = p.OBJECT_ID
WHERE OBJECTPROPERTY(dm_ius.OBJECT_ID,'IsUserTable') = 1
AND dm_ius.database_id = DB_ID()
AND i.type_desc in('clustered', 'nonclustered')
AND i.is_unique_constraint = 0
--AND (o.name='EmailMessageAttachments')
ORDER BY (dm_ius.user_seeks + dm_ius.user_scans + dm_ius.user_lookups) ASC
Т к представление dm_db_index_usage_stats среди прочего показывает и уровни индекса.
Т е просто по данному представлению можно получить что один и тот же индекс используется и не используется, т к вывод был для разных уровней. Сам в свое время сильно ошибся, интерпретируя неверно показатели.
Анализ статистики завтра скину
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816854
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийGEMSergey Syrovatchenko, на счет фильтруемых индексов. Достаточно часто встречал, когда фильтруемый индекс непросто не используется оптимизатором, а даже через подсказки не может план построить и вылетает ошибка выполнения запроса.Ну если создать неправильный индекс, а потом заставить сервер его использовать то конечно оно с ошибкой свалится.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816855
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийGEM Т к представление dm_db_index_usage_stats среди прочего показывает и уровни индекса. Уровни? Какие еще уровни показывает это представление?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816865
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko, а не было мысли второй закладкой прикрутить анализ по индексам на основе sys.dm_db_missing_index_group_stats и сотоварищей?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816918
andy stа не было мысли второй закладкой прикрутить анализ по индексам на основе sys.dm_db_missing_index_group_stats и сотоварищей?
Мысль была. Думаю сделать можно будет опционально:
В настройках добавляется опция MISSING INDEXES

Cканируем записи из этого представления и показываем их в том же гриде что и всю отсальную информацию

В отличии от обычных индексов для этой группы будет две команды CREATE INDEX / CREATE STATISTICS (потому как не всегда индекс имеет смысл создавать)

Будут добавлены новые колонки Index Columns / Included Columns как для существующих записей, так и для тех индексов которые представление рекомендует создать (для наглядности это думаю нужно будет)

ЕвгенийGEM лучше отсеивать отключенные индексы и те базы, которые недоступны на редактированине (как в целом БД, так и отдельный ее файл).
Отключенные индексы в итоговую выборку и так не попадают из-за условий rows > 0 + предварительной фильтрации по размеру. У отключенного индекса размера нет как такового.
Базы которые недоступны для редактирования я тоже игнорю еще на этапе выбора за счет проверки на права + state = 0

ЕвгенийGEMесли индекс секционированный, то есть возможность выбирать какие секции и что с каждым делать и каким образом делать?
Все операции делаются в разрезе секции, поэтому можно для каждой секции задать свое действие. Увы не автоматически, а ручками.

ЕвгенийGEMсделать возможным выборочно обновлять статистики не только для индексов и также разными способами (полностью обновлять или частично)
Есть идея:

Добавить в настройки новый тип STATISTICS

Показывать в том же гриде статистику где и индексы выводятся

Фильтровать статистику с сервера на клиент на основе устаревания (то есть выведи мне все что старее н-дней) либо показывать где статистика не совпадает с текущим кол-во строк у таблицы

Будет показываться как статистика закрепленная за индексом (есть проблема с автоинкрементальной), так и пользовательская

Если вдруг мы делаем ребилд индекса и выбрали дальше еще апдейт статистики с фуллсканом то обновление статистики делаться не будет (то есть нужно будет предусмотреть чтобы лишних операций не было)

Примерно как-то так это себе вижу. Получится правда монстр зато весьма функциональный.
Пока не начал делать хотелось бы мнение комьюнити спросить.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39816991
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko, как и обещал-вот один из примеров обновления индексов:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
declare
	--Максимальный размер в МБ для рассматриваемого объекта
	@ObjectSizeMB numeric (16,3) = NULL,
	--Максимальное кол-во строк в секции
	@row_count numeric (16,3) = NULL

/*
	тонкое обновление статистики
*/
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

   declare @ObjectID int;
declare @SchemaName nvarchar(255);
declare @ObjectName nvarchar(255);
declare @StatsID int;
declare @StatName nvarchar(255);
declare @SQL_Str nvarchar(max);

;with st AS(
select DISTINCT 
obj.[object_id]
, obj.[create_date]
, OBJECT_SCHEMA_NAME(obj.[object_id]) as [SchemaName]
, obj.[name] as [ObjectName]
, CAST(
		(
		   --общее число страниц, зарезервированных в секции (по 8 КБ на 1024 поделить=поделить на 128)
			SELECT SUM(ps2.[reserved_page_count])/128.
			from sys.dm_db_partition_stats as ps2
			where ps2.[object_id] = obj.[object_id]
		) as numeric (38,2)
	  ) as [ObjectSizeMB] --размер объекта в МБ
, s.[stats_id]
, s.[name] as [StatName]
, sp.[last_updated]
, i.[index_id]
, i.[type_desc]
, i.[name] as [IndexName]
, ps.[row_count]
, s.[has_filter]
, s.[no_recompute]
, sp.[rows]
, sp.[rows_sampled]
--кол-во изменений вычисляется как:
--сумма общего кол-ва изменений в начальном столбце статистики с момента последнего обновления статистики
--и разности приблизительного кол-ва строк в секции и общего числа строк в таблице или индексированном представлении при последнем обновлении статистики
, sp.[modification_counter]+ABS(ps.[row_count]-sp.[rows]) as [ModificationCounter]
--% количества строк, выбранных для статистических вычислений,
--к общему числу строк в таблице или индексированном представлении при последнем обновлении статистики
, NULLIF(CAST( sp.[rows_sampled]*100./sp.[rows] as numeric(18,3)), 100.00) as [ProcSampled]
--% общего кол-ва изменений в начальном столбце статистики с момента последнего обновления статистики
--к приблизительному количество строк в секции
, CAST(sp.[modification_counter]*100./(case when (ps.[row_count]=0) then 1 else ps.[row_count] end) as numeric (18,3)) as [ProcModified]
--Вес объекта:
--[ProcModified]*десятичный логарифм от приблизительного кол-ва строк в секции
, CAST(sp.[modification_counter]*100./(case when (ps.[row_count]=0) then 1 else ps.[row_count] end) as numeric (18,3))
							* case when (ps.[row_count]<=10) THEN 1 ELSE LOG10 (ps.[row_count]) END as [Func]
--было ли сканирование:
--общее количество строк, выбранных для статистических вычислений, не равно
--общему числу строк в таблице или индексированном представлении при последнем обновлении статистики
, CASE WHEN sp.[rows_sampled]<>sp.[rows] THEN 0 ELSE 1 END as [IsScanned]
, tbl.[name] as [ColumnType]
, s.[auto_created]	
from sys.objects as obj
inner join sys.stats as s on s.[object_id] = obj.[object_id]
left outer join sys.indexes as i on i.[object_id] = obj.[object_id] and (i.[name] = s.[name] or i.[index_id] in (0,1) 
				and not exists(select top(1) 1 from sys.indexes i2 where i2.[object_id] = obj.[object_id] and i2.[name] = s.[name]))
left outer join sys.dm_db_partition_stats as ps on ps.[object_id] = obj.[object_id] and ps.[index_id] = i.[index_id]
outer apply sys.dm_db_stats_properties (s.[object_id], s.[stats_id]) as sp
left outer join sys.stats_columns as sc on s.[object_id] = sc.[object_id] and s.[stats_id] = sc.[stats_id]
left outer join sys.columns as col on col.[object_id] = s.[object_id] and col.[column_id] = sc.[column_id]
left outer join sys.types as tbl on col.[system_type_id] = tbl.[system_type_id] and col.[user_type_id] = tbl.[user_type_id]
where obj.[type_desc] <> 'SYSTEM_TABLE'
)
SELECT
	st.[object_id]
	, st.[SchemaName]
	, st.[ObjectName]
	, st.[stats_id]
	, st.[StatName]
	INTO #tbl
FROM st
WHERE NOT (st.[row_count] = 0 AND st.[last_updated] IS NULL)--если нет данных и статистика не обновлялась
	--если нечего обновлять
	AND NOT (st.[row_count] = st.[rows] AND st.[row_count] = st.[rows_sampled] AND st.[ModificationCounter]=0)
	--если есть что обновлять (и данные существенно менялись)
	AND ((st.[ProcModified]>=10.0) OR (st.[Func]>=10.0) OR (st.[ProcSampled]<=50))
	--ограничения, выставленные во входных параметрах
	AND (
		 ([ObjectSizeMB]<=@ObjectSizeMB OR @ObjectSizeMB IS NULL)
		 AND
		 (st.[row_count]<=@row_count OR @row_count IS NULL)
		);

WHILE (exists(select top(1) 1 from #tbl))
BEGIN
	select top(1)
	@ObjectID	=[object_id]
	,@SchemaName=[SchemaName]
	,@ObjectName=[ObjectName]
	,@StatsId	=[stats_id]
	,@StatName	=[StatName]
	from #tbl;

	SET @SQL_Str = 'IF (EXISTS(SELECT TOP(1) 1 FROM sys.stats as s WHERE s.[object_id] = '+CAST(@ObjectID as nvarchar(32)) + 
					' AND s.[stats_id] = ' + CAST(@StatsId as nvarchar(32)) +')) UPDATE STATISTICS ' + QUOTENAME(@SchemaName) +'.' +
					QUOTENAME(@ObjectName) + ' ('+QUOTENAME(@StatName) + ') WITH FULLSCAN;';

	execute sp_executesql @SQL_Str;

	delete from #tbl
	where [object_id]=@ObjectID
	  and [stats_id]=@StatsId;
END

drop table #tbl;


Здесь лучше переписать на курсор, чем удалять каждый раз значение из временной таблицы, но мне было лень)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39817259
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: ЕвгенийGEM, ваш список "аномальных" фич MSSQL и связанное с ним обсуждения я отсюда вырезаю: в этой теме неуместно. Если все еще хотите подискутировать, создайте отдельню тему, хотя я бы на вашем месте с таким уровнем аргументации "аномальности" не стал -- засмеют.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39817266
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,
по первому предложению полностью согласен.
По второму может статью опубликую по багам скуля.
P.S.: мне пофиг на чужое мнение, которое не сталкивалось с тем фактом, который я в свое время зарегистрировал
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39817272
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийGEMЗдесь лучше переписать на курсор, чем удалять каждый раз значение из временной таблицы, но мне было лень)
не лучше
https://www.sqlbook.com/advanced/sql-cursors-how-to-avoid-them/
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39817283
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийGEMГавриленко Сергей Алексеевич,
по первому предложению полностью согласен.
По второму может статью опубликую по багам скуля.
P.S.: мне пофиг на чужое мнение, которое не сталкивалось с тем фактом, который я в свое время зарегистрировал


"Баги скуля" - про собак
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39817305
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,
в данной статье описывается блокировка на таблицу. Но если положить во временную и потом по ней курсором-это часто быстрее (по крайней мере подобное что ы привел сверху будет быстрее-проверял на других подобных запросах).
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39817306
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,
прошу прощения-опучатался выше: вместо "по крайней мере подобное что ы привел сверху будет быстрее" надо "по крайней мере подобное что я привел сверху будет быстрее"
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39818087
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичМодератор: ЕвгенийGEM, ваш список "аномальных" фич MSSQL и связанное с ним обсуждения я отсюда вырезаю: в этой теме неуместно. Если все еще хотите подискутировать, создайте отдельню тему, хотя я бы на вашем месте с таким уровнем аргументации "аномальности" не стал -- засмеют.Ну вы и party pooper. Лишили пятничного фана
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39820344
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще предложение-для большей гибкости в использовании предлагаю обернуть в библиотеки, и вывести в команды PowerShell, как это сделано напр здесь:
https://dbatools.io/commands/
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39821206
Выложил версию 1.0.0.37 :

Реализована поддержка коммандной строки
Можно ресайзить колонки
Мелкие улучшения в GUI



В ближайших планах заняться реализацией функционала по обслуживанию статистики и показывать missing indexes с возможностью их создавать.

Еще есть идея добавить функционал по перемещению индекса в другую файловую группу при ребилде.
Такое кому-то будет полезным?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39821558
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,
Огромное спасибо за труды!
Дело стоящее!

Кратко пробежался по 4-м страницам, хотелось бы увидеть небольшой help в программе. Думаю на 2-х языках вполне достаточно.

Поставил себе, буду пробовать вникать и ждать мануальчик)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39821572
Den_KP, спасибо за отзыв. Справки делать не планировал. Старался изначально, чтобы все было более-менее очевидным. Возможно в будующем добавлю.

В планах статью написать на хабре/доу о том с каким трешом все делалось :)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39821689
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылочку на хабр ждем)))
Справка просто поможет донести до аудитории все труды и что с чем едят.
Уже первый анализ провел, запланировал задачи по нескольким БД на ночь. Правда пока что Джоб по Ola методики запущу.

Есть маленький вопрос, возможно я упустил в переписки. Каким образом происходит rebuild кучи? что он дает?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39821741
Den_KPКаким образом происходит rebuild кучи? что он дает?
Как минимум он консолидирует свободное место. Плюс убирает всякие неприятные вещи вроде forwarded records:

https://www.mssqltips.com/sqlservertip/2984/identify-and-correct-sql-server-forwarded-records/
https://www.brentozar.com/archive/2016/07/fix-forwarded-records/
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39821986
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KPСсылочку на хабр ждем)))
Справка просто поможет донести до аудитории все труды и что с чем едят.
Уже первый анализ провел, запланировал задачи по нескольким БД на ночь. Правда пока что Джоб по Ola методики запущу.
Мне просто интересно, чем Ола не устраивает?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39822026
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При чем тут "не устраивает", смысл фразы в том что запускается не средствами Index Manager.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39822063
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

Спасибо за информацию!

По результатам, ночного запуска, вижу улучшение по метрикам.

Также за кучи отдельное спасибо, на одной коробочной базе нашел на данный момент 2 кучи, которые как оказалось очень сильно просили кластерный индекс.

Выборка по одной таблицы всех значений занимает 1сек, вместо 2 минут 42 секунд ранее.

Юзеры тоже заметили профит, правда Page Life Expentance сбросился, сейчас стал набирать.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39822066
Den_KPВыборка по одной таблицы всех значений занимает 1сек, вместо 2 минут 42 секунд ранее.
Забавный кейс. У меня такой импакт был только на колумнсторе, когда все его rowgroup'ы были открыты из-за чрезмерной модификации. Может просто данные по таблице лежали на медленной области диска? То такая статистика роста перфоманса чуток настораживает :)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39822077
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там поданный лун с массива, и диски так быстро бы не перетекли на быстрые.

Правда я выборку делал просто всех полей, но в обоих случаях. 1-й исключая индекс, второй по умолчанию.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39822156
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SyrovatchenkoВыложил версию 1.0.0.37 :

Реализована поддержка коммандной строки
Можно ресайзить колонки
Мелкие улучшения в GUI



В ближайших планах заняться реализацией функционала по обслуживанию статистики и показывать missing indexes с возможностью их создавать.

Еще есть идея добавить функционал по перемещению индекса в другую файловую группу при ребилде.
Такое кому-то будет полезным?


SQL - язык, и утилита работает только с SQL Server, лучше может назвать SQL Server Index manager
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39822209
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всеми руками вверх!

Кстати хочу порекомендовать такую софтину SolarWinds DPA, там есть интересные реализации по индексам, так же очень интересно реализован просчет wait time. Может оттуда пригоядтся практики для реализации Вашей программы.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39822244
Den_KPSolarWinds DPA, там есть интересные реализации по индексам, так же очень интересно реализован просчет wait time. Может оттуда пригоядтся практики для реализации Вашей программы.
Это больше как монитор, в прогу не хотелось бы пихать все что только можно. В планах реально добавить обслуживание статистики и создание индексов по данным из missing indexes.

Ролг Хупин SQL - язык, и утилита работает только с SQL Server, лучше может назвать SQL Server Index manager
Замечение корректное, название по правде еще будет корректироваться.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39822449
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mind, потому что все вроде есть готовое и шаблонное, но на деле к конкретной ситуации не самым лучшим образом подходит.
Например, из аналитики как минимум у каждой системы будет свои определения:
1) странные запросы, которые через какое-то время станут проблемой для других
2) странная активность в журнале событий скуля, которые говорят о наступлении скорых проблем
Аналогично и по индексам и как их оптимизировать и как определять что их надо оптимизировать, и какой планируемый выигрыш от этого+анализ постфактум на сколько стало хорошо.
Аналогично и по статистикам.
И не стоит забывать что в одной системе хорошо, для другой будет смертью.
А готовое и шаблонное одинаково как хорошо, так и плохо для всех или большинства случаев.
Сам Ola пользуюсь+другими решениями, но обычно на небольших системах или пока не сделал свою более оптимальную для данной системы.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39822593
northern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр ГладченкоSergey Syrovatchenko,
Дефрагментация на листовом уровне сломает все статистики, это будет особенно заметно на больших таблицах, где даже "новомодное" автообновление статистики не спасает от проблем с правильной статистикой для оптимизатора. В таких случаях часто помогает только обновление некластерных индексов с полным сканированием.
Секционирование вносит ещё большее разнообразие вариантов дефрагментации - будет интересно понаблюдать, как Вы с этим справитесь :) ...есть ведь ещё и фильтрованные индексы, и много чего ещё есть....
Как раз сейчас разбиваем крупные таблицы на секции. MS Axapta, 24/7, бд уже больше 4ТБ, одна реплика в асинхронном режиме. По монитору активности в пик около 70 тыс пакетов/сек. Почти все таблицы имеют кластерный индекс

Разбиваем большие таблицы по одной таблице ночью, к утру зеркало успевает догнать примари ноду. Действительно, ломаются планы. Но достаточно сделать ребилд после секционирования и планы становятся нормальными. Катастрофы не случилось. Юристы не понабились ))
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39824431
Выложил версию 1.0.0.38 :

Добавил возможность удалять неиспользуемые индексы
Добавил новые столбцы, чтобы можно видеть по каким полям индекс построен
Мелкие улучшения в GUI и багфикс

Небольшой пример из жизни как можно новым функционалом пользоваться:

...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39824514
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

неиспользуемые индексы : это с момента последнего рестарта инстанса?

не обратил внимания: подсвечиваются ли индексы-дубликаты?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39824771
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradSergey Syrovatchenko,

неиспользуемые индексы : это с момента последнего рестарта инстанса?

не обратил внимания: подсвечиваются ли индексы-дубликаты?

да, как вы определяете неиспользуемые?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39824773
komradнеиспользуемые индексы : это с момента последнего рестарта инстанса?
Да. Информация традиционно из sys.dm_db_index_usage_stats получается.

komradподсвечиваются ли индексы-дубликаты?
Нет, но могу такую функционально добавить в будующих билдах. Нужно ли это просто пока хз.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39824781
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenkokomradнеиспользуемые индексы : это с момента последнего рестарта инстанса?
Да. Информация традиционно из sys.dm_db_index_usage_stats получается.

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

кстати, 1 может быть опасно, 2 да, бывает полезно
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39824786
Ролг Хупинкстати, 1 может быть опасно
Спорить конечно же не буду. Там приколов с этим системным представлением много (когда база AUTO_CLOSE, когда индексы пересоздаются и тд), но тем не менее :)
Эта инфа для наглядности показывается, а там пользователь уже сам решает.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39827578
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно попросить первую картинку из статьи на хабре поставить в качестве заставки к программе.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39827580
Сегодня не пятница, но накинуть хайпа необходимо :)
Для всех кому интересно выложил на Хабре трушную историю о том как делал туловину свою и почему.

https://habr.com/en/post/455339/

Технический пост о том как все устроено тоже скоро будет.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39827581
andy stА можно попросить первую картинку из статьи на хабре поставить в качестве заставки к программе.
Я подумаю )))
Главное чтобы народ пользовался тулом

...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39829551
Выложил версию 1.0.0.39 :

Добавил возможность создавать индексы на основе информации из missing index
Мелкие улучшения в GUI

Новый функционал на небольшом примере:



Выложил перевод предыдущей статьи вдруг кому-то будет интересно:
https://habr.com/en/post/457206/

Планирую порефакторить приложение и прикрутить поддержку обслуживания статистики.
Хочется узнать мнение. Может стоит отдельную приложуху сделать для просмотра и обслуживания статистики?
Или прилепить в текущем приложении все что можно прилепить?

И очень хочется получить фитбек от всех желающих в плане... что еще в прогу добавить... что удобно / неудобно... баги / фичи и тд.
Заранее спасибо.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39829808
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,
Вариант сделать для missing index отдельную закладку с отдельным адекватным набором столбиков не рассматривался?
По двойному клику на строке - детализация по индексу. там же опция по оценке изменения типа сжатия...
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39829821
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy stSergey Syrovatchenko,
Вариант сделать для missing index отдельную закладку с отдельным адекватным набором столбиков не рассматривался?

это дельная мысль
а то на лицо перенасыщение данными
"усложнять - просто, упрощать - сложно" (с) Мейер
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830387
andy st Вариант сделать для missing index отдельную закладку с отдельным адекватным набором столбиков не рассматривался?
Честно так и хотел делать, но в коде завязка на основной грид и весь UI на нем основывается. Возможно в будующем разобью на закладки.

andy stПо двойному клику на строке - детализация по индексу. там же опция по оценке изменения типа сжатия...
В планах сделать. У каждой строки есть дриллдаун в котором показывается статистика по индексу в виде графика и таблицы + различная инфа, вроде сжатия, всякой интернал информации и тд. К слову если есть какие-то хотелки в плане доп. информации, которую хотелось бы в деталях видеть - напишите пжл.

Еще была идея показывать на графике распределение статистики и то что по факту в таблице.

komrad а то на лицо перенасыщение данными
В плане? :)
Столбцы каждый пользователь под себя может настроить. Да согласен что инфы много, но старался так чтобы каждый для себя можно увидеть все что только возможно.

Если есть что-то явно лишнее на UI смело говорите, постараюсь исправить.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830422
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenkokomrad а то на лицо перенасыщение данными
В плане? :)
Столбцы каждый пользователь под себя может настроить. Да согласен что инфы много, но старался так чтобы каждый для себя можно увидеть все что только возможно.

Если есть что-то явно лишнее на UI смело говорите, постараюсь исправить.

тут дело в позиционировании приложения
если оно для опытных дба, то и "инженерный" вид не помеха
если для облегчения жизни регулярных админов, то надо от простого к сложному, как в SQLCoPilot, например -
https://sqlpadre.wordpress.com/2014/02/06/sql-copilota-software-review/

вышесказанное из моего личного опыта написания "аналога" диагностической тулзы типа solarwinds и подобных
коллега ДБА посмотрев на интерфейс, сказал что слишком сложно
другой же сказал - норм!

такие дела
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830506
komradтут дело в позиционировании приложения
если оно для опытных дба, то и "инженерный" вид не помеха
Изначально планировалось для новичков, но по мере добавления новых фич получилось, как мне хочется надеяться, что-то универсальное.
Сразу хочется пошутить словами коллеги "универсальные вещи работают универсально плохо"

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

Постараюсь скоро добавить возможность обслуживания статистики хотя бы в черновом виде, а там будет видно что народ скажет за функционал.

Если что буду очень рад фитбекам :)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830537
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,
по индексам можно еще показывать используемые файловые группы и файлы + свободное место на дисках с этими файлами.
В настройки - критический % свободного места на дисках и подсветка красненьким, что мол близится "ойвсё!"
Если считать, что управление дисковым пространством относится к обслуживанию индексов, то можно сохранять статистику свободному месту и, как вариант, на основе пары-тройки срезов, между которыми больше суток, считать прогноз по заполнению диска.
Исторические данные по самим индексам тоже могут пригодиться для каких-нибудь веселых картинок.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830619
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы еще сильно рекомендовал в генерящихся T-SQL скриптах поменять все
Код: sql
1.
PRINT '.....'

на
Код: sql
1.
RAISERROR(N'.....', 0,1) WITH NOWAIT;


Дело в том, что PRINT он буферезируется, и, частенько, в больших и нагруженных скриптах, сообщения копятся, копятся в буфере а потом, только, разом выдаются.
Т.е. мы не видим процесс, а, только, по окончанию, видим как оно отработало.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830659
Yuri AbeleRAISERROR(N'.....', 0,1) WITH NOWAIT
В следующем билде эта правка будет.

andy st по индексам можно еще показывать используемые файловые группы и файлы + свободное место на дисках с этими файлами.
Идея принята. Подумаю как ее можно будет оформить в рамках приложения

+ было бы полезно видеть на этапе выбора баз данных свободное место в файлах данных и логе? (если да, то выгребание этой инфы чуток замедлит основной запрос)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830739
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko+ было бы полезно видеть на этапе выбора баз данных свободное место в файлах данных и логе? (если да, то выгребание этой инфы чуток замедлит основной запрос)
Если использовать ту логику (перехватывается через Profiler), которую SSMS в отчете "Disk usage by Table" использует, то задержка будет, практически, не заметна.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830747
Yuri AbeleЕсли использовать ту логику (перехватывается через Profiler), которую SSMS в отчете "Disk usage by Table" использует, то задержка будет, практически, не заметна.
Если говорить за этот отчет, то там все через sys.allocation_units данные выгребаются, но вопрос стоит в том чтобы подсчитать занимаемое место по всем базам одним запросом. А это делать прийдется итерационно (других способов увы не знаю)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830755
Имел ввиду такого рода код:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
IF OBJECT_ID('tempdb.dbo.#space') IS NOT NULL
    DROP TABLE #space

CREATE TABLE #space (
      database_id INT PRIMARY KEY
    , data_used_size DECIMAL(18,2)
    , log_used_size DECIMAL(18,2)
)

DECLARE @SQL NVARCHAR(MAX)

SELECT @SQL = STUFF((
    SELECT '
    USE [' + d.name + ']
    INSERT INTO #space (database_id, data_used_size, log_used_size)
    SELECT
          DB_ID()
        , SUM(CASE WHEN [type] = 0 THEN space_used END)
        , SUM(CASE WHEN [type] = 1 THEN space_used END)
    FROM (
        SELECT s.[type], space_used = SUM(FILEPROPERTY(s.name, ''SpaceUsed'') * 8. / 1024)
        FROM sys.database_files s
        GROUP BY s.[type]
    ) t;'
    FROM sys.databases d
    WHERE d.[state] = 0
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')

EXEC sys.sp_executesql @SQL

SELECT
      d.database_id
    , d.name
    , d.state_desc
    , d.recovery_model_desc
    , t.total_size
    , t.data_size
    , s.data_used_size
    , t.log_size
    , s.log_used_size
FROM (
    SELECT
          database_id
        , log_size = CAST(SUM(CASE WHEN [type] = 1 THEN size END) * 8. / 1024 AS DECIMAL(18,2))
        , data_size = CAST(SUM(CASE WHEN [type] = 0 THEN size END) * 8. / 1024 AS DECIMAL(18,2))
        , total_size = CAST(SUM(size) * 8. / 1024 AS DECIMAL(18,2))
    FROM sys.master_files
    GROUP BY database_id
) t
JOIN sys.databases d ON d.database_id = t.database_id
LEFT JOIN #space s ON d.database_id = s.database_id
ORDER BY t.total_size DESC
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830769
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SyrovatchenkoИмел ввиду такого рода код:



посмотрите в сторону sys.dm_db_file_space_usage
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830782
komradпосмотрите в сторону sys.dm_db_file_space_usage
Этот вариант тоже рассматривал. Табличная функция выбирает данные в разрезе текущей базы.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830811
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenkokomradпосмотрите в сторону sys.dm_db_file_space_usage
Этот вариант тоже рассматривал. Табличная функция выбирает данные в разрезе текущей базы.

да, промашка, проверил как у себя реализовано - подход такой же, через use [db], но только в цикле и без varchar(max):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
set nocount on;

declare @db table (db varchar(128))
create  table #files
	(
	Drive varchar(10),
	DBName varchar(128),
	FileType varchar(10),
	LogicalName varchar(128),
	PhysicalName varchar(512),
	SizeMB numeric(10,2),
	Comment varchar(128),
	[FileGroup] varchar(128),
	SpaceUsedMB numeric(10,2),
	SpaceFreeMB numeric(10,2),
	[Status] varchar(50),
	MaxSizeMB varchar(20),
	Growth varchar(20),
	FileID smallint
	)
declare @d varchar(128)
declare @cmd varchar(4096)

insert into @db (db)
select name 
from sys.databases
where is_in_standby<>1
and DATABASEPROPERTYEX(name,'Status')='ONLINE'

while exists (select top 1 1 from @db)
	begin
		select top 1 @d=db from @db 

		set @cmd='use ['+@d+'];'
		set @cmd=@cmd+'select 
							left(physical_name,3) [Drive]
							,db_name() [DBName]
							,type_desc [FileType]
							,name [LogicalName]
							,physical_name
							,size/128. [SizeMB]
							,state_desc [comment]
							,case when data_space_id=0 then '''' 
							else (select name+N'' (''+type_desc+N'')'' collate SQL_Latin1_General_CP1_CI_AS from sys.data_spaces where data_space_id=df.data_space_id) end [FileGroup]

							,CAST(FILEPROPERTY(df.name, ''SpaceUsed'') AS int)/128. [SpaceUsedMB]
							,size/128.0 - CAST(FILEPROPERTY(df.name, ''SpaceUsed'') AS int)/128. AS [SpaceFreeMB]

							,df.state_desc as [Status]

							,case 
								when df.max_size=-1 then ''Unlimited''
								else convert(varchar(50),ceiling(df.max_size/128.)) end as [MaxSizeMB]

							,case 
								when df.is_percent_growth=1 then convert(varchar(20),df.growth)+''%''
								else 
								convert(varchar(20),convert(int,df.growth/128.))+'' MB'' end as [Growth]
							, df.file_id
						from sys.database_files df 
						
						option (recompile)'

		insert into #files (Drive,DBName,FileType,LogicalName,PhysicalName,SizeMB,Comment,[FileGroup],SpaceUsedMB,SpaceFreeMB,[Status],MaxSizeMB,Growth,FileID)
		exec (@cmd)

		set @cmd=''
		delete from @db where db=@d
	end

select 
	Drive
	,DBName
	,FileType
	,LogicalName
	,PhysicalName
	,SizeMB
	,Comment
	,[FileGroup]
	,SpaceUsedMB
	,SpaceFreeMB
	,[Status]
	,MaxSizeMB
	,Growth
	,FileID
from #files 


...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39830932
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko+ было бы полезно видеть на этапе выбора баз данных свободное место в файлах данных и логе? (если да, то выгребание этой инфы чуток замедлит основной запрос)
А как же веяния в разработке "современных" приложений - долго не запускаться, сразу чтонить показать, остальное показать "как-нибудь" и в фоне догрузить?
Так и тут: старый запрос по бд, показ таблички с всеми столбиками, включая свободное место с надписью "получение данных".
И фоновым потоком уже читать детализацию по базам и подменять "получение.." на циферки.
Жаждет человек увидеть данные по свободному месту - дождется, не актуально - сразу пойдет дальше.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39831869
Выложил версию 1.0.0.40 :

Добавил возможность смотреть после рефреша размер свободного места в файлах

Добавил поиск в диалог выбора базы

Исправлена ошибка с квотированием (специально для тех кто людит добавлять ' ] [ вот такие символы к именам обьектов )

По просьбе Yuri Abele при генерации скрипта поменял PRINT на RAISERROR WITH NOWAIT



Есть подозрение что расширенный запрос по получению списка баз может тормозить.
У кого есть возможность проверьте плиз.
Особенно если у вас есть много баз в AUTO_CLOSE.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39831882
Выложил версию 1.0.0.41 .

Чуток поправил GUI.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39832395
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здорово! Спасибо!
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39832556
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,
А можно еще показать свободное место на диске расположения файлов базы и логов?
Правда, придётся переделывать табличку, чтобы файлы и файловые группы прикрутить.
Ну и печалит невозможность сортировать по полю "selection". Типа сначала выбранные, потом остальные. Как по базам, так и по индексам.
фишка: create index по missing опцию online=on игнорирует
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39833030
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad как в SQLCoPilot, например -
https://sqlpadre.wordpress.com/2014/02/06/sql-copilota-software-review/ что то сайт то у них не открывается.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39833054
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mindkomrad как в SQLCoPilot, например -
https://sqlpadre.wordpress.com/2014/02/06/sql-copilota-software-review/ что то сайт то у них не открывается.

да, к сожалению, последний раз он откликался в октябре 2018
https://web.archive.org/web/2018*/www.sqlcopilot.com

странно, что у них произошло такого, чтобы сайт забросить
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39834916
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey SyrovatchenkoВыложил версию 1.0.0.39 :

Добавил возможность создавать индексы на основе информации из missing index
Мелкие улучшения в GUI

Сергей, если б в этом случае она показывала "почти синонимы", т.е. индексы, похожие на missing index, но отличающиеся includ'ом, или дополнительным "вторичным" полем в самом индексе - цены б ей не было.

Вообще, поиск синонимов и почти синонимов в индексах - был бы очень нужной штукой.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39835049
andy stА можно еще показать свободное место на диске расположения файлов базы и логов?
Правда, придётся переделывать табличку, чтобы файлы и файловые группы прикрутить.
Пока не планирую такое добавлять, потому как тяжело понять как этим пользоваться. Если можете нарисовать примерный мокап с предлагаемым функционалом, то буду благодарен.

andy stНу и печалит невозможность сортировать по полю "selection". Типа сначала выбранные, потом остальные. Как по базам, так и по индексам.
Пробовал исправить, увы не получилось.

andy stфишка: create index по missing опцию online=on игнорирует
Сделано. В следующем билде будет.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39835054
uaggsterесли б в этом случае она показывала "почти синонимы", т.е. индексы, похожие на missing index, но отличающиеся includ'ом, или дополнительным "вторичным" полем в самом индексе - цены б ей не было.

Вообще, поиск синонимов и почти синонимов в индексах - был бы очень нужной штукой.
То есть хотелось бы видеть в общем списки дубликаты индексов? Если индексы по полям идентичны (порядок может различаться), то такое могу реализовать подстветкой.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39835240
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenkouaggsterесли б в этом случае она показывала "почти синонимы", т.е. индексы, похожие на missing index, но отличающиеся includ'ом, или дополнительным "вторичным" полем в самом индексе - цены б ей не было.

Вообще, поиск синонимов и почти синонимов в индексах - был бы очень нужной штукой.
То есть хотелось бы видеть в общем списки дубликаты индексов? Если индексы по полям идентичны (порядок может различаться), то такое могу реализовать подстветкой.А что если поля одинаковые, а порядок разный то это дубликаты?

А что значит индексы отличаются дополнительным вторичным полем и что вам собственно это даст? Огласите все критерии похожести.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39835322
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MindSergey Syrovatchenkoпропущено...

То есть хотелось бы видеть в общем списки дубликаты индексов? Если индексы по полям идентичны (порядок может различаться), то такое могу реализовать подстветкой.А что если поля одинаковые, а порядок разный то это дубликаты?

А что значит индексы отличаются дополнительным вторичным полем и что вам собственно это даст? Огласите все критерии похожести.
Хотелось бы видеть ситуации типа такой:
1. Полные синонимы (т.е. абсолютно идентичные индексы, дубликаты).
2. Синонимы, отличающиеся списком INCLUDE:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE UNIQUE NONCLUSTERED INDEX [ix_I1] ON [dbo].[SCHET]
(
	[ID_SCHET] ASC
)
INCLUDE ( 	
	[CODE_O],
	[YEAR],
	[MONTH],
	[NSCHET],
	[DSCHET]
);

CREATE NONCLUSTERED INDEX [ix_I2] ON [dbo].[SCHET]
(
	[ID_SCHET] ASC
);

CREATE UNIQUE NONCLUSTERED INDEX [ix_I4] ON [dbo].[SCHET]
(
	[ID_SCHET] ASC
)
INCLUDE ( 	
	[CODE_O],
	[DATE_CONTRACT]
);


3. Частичные синонимы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE UNIQUE NONCLUSTERED INDEX [ix_I11] ON [dbo].[SCHET]
(
	[ID_SCHET] ASC,
	[CODE_O] ASC
)
INCLUDE ( 	
	[YEAR],
	[MONTH],
	[NSCHET],
	[DSCHET]
);

CREATE NONCLUSTERED INDEX [ix_I12] ON [dbo].[SCHET]
(
	[ID_SCHET] ASC
);

CREATE UNIQUE NONCLUSTERED INDEX [ix_I13] ON [dbo].[SCHET]
(
	[ID_SCHET] ASC
)
INCLUDE ( 	
	[CODE_O],
	[DATE_CONTRACT]
);


Эти 3 индекса могут быть заменены одним, без ущерба для производительности:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE UNIQUE NONCLUSTERED INDEX [ix_I21] ON [dbo].[SCHET]
(
	[ID_SCHET] ASC,
	[CODE_O] ASC
)
INCLUDE ( 	
	[YEAR],
	[MONTH],
	[NSCHET],
	[DSCHET],
	[DATE_CONTRACT]
);


4. Ситуации, когда индексы, включая include, содержат одни и те же поля.
Я понимаю, что индексы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE UNIQUE NONCLUSTERED INDEX [ix_I1] ON [dbo].[SCHET]
(
	[ID_SCHET] ASC,
	[CODE_O] ASC
)
INCLUDE ( 	
	[YEAR],
	[MONTH],
	[NSCHET],
	[DSCHET]
) 


И:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE UNIQUE NONCLUSTERED INDEX [ix_I1] ON [dbo].[SCHET]
(
	[CODE_O] ASC,
	[ID_SCHET] ASC
)
INCLUDE ( 	
	[YEAR],
	[MONTH],
	[NSCHET],
	[DSCHET]
) 


- существенно неэквивалентны в общем случае.
Но об их существовании - мне бы хотелось знать. Потому что в частном конкретном случае - они могут оказаться еще как эквивалентны.

Нечто подобное умеет sp_Blitz, но "настоящая" утилита - была бы полезной.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39835365
uaggsterХотелось бы видеть ситуации типа такой:
Такое сделать можно. Я даже за. Какого типа разукрашки хотели бы видеть в каждом из описанных случаев?
Если развивать тему, то можно выделять индексы которые не используются вообще (при условии что другие индексы в рамках таблицы используются).

Главное тут понимать как показывать о проблеме. Думаю можно в имени индекса показывать иконку восклицания + тултип.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39835435
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разумеется, 1 ситуация - это красный уровень, 2 - оранжевый, 3 - желтый, а четвертая - не знаю, серый какой-нибудь.
И парно (эээ... N-но) подсвечиваться, при наведении или выделении.
И какой-нибудь одновременный просмотр определения, с подсветкой различий.
Сам рефакторинг, и тем паче - автоматический рефакторинг, конечно, не нужен. Только обнаружение.

Я, прошу прощения, это, конечно, возможно, не тема данной утилиты, просто наболело.
У меня больше полусотни разных баз на куче серверов.
Ситуация когда "внезапно" выясняется, что база вдруг раздулась неприлично, или быстродействие на каких либо заливках - упало - чуть ли не ежедневно проявляется.
Новый мальчик (девочка) у разработчиков -> новый отчет -> куча новых индексов. Такая обычная цепочка.
Я понимаю, что такие проблемы решаются чисто административно, в смысле "бумажно-административно", методом расстреляния нерадивых, но, к сожалению, не могу довести эту прогрессивную методику до промышленного внедрения. Разработчики очень возражают.
Поэтому какой-нибудь дашборд, который индицировал бы ситуацию "вот тут новое говно, неотличимое от старого" - очень нужно.
По крайней мере, чтоб я мог отдать его молодым обезьянкам, чтобы скинуть эту проблему со своего старого обезьяньего хвоста.

Идея с "совсем не используемыми индексами" - она, конечно, замечательна, но нужно тогда, чтобы приложение куда-то засасывало статистику использования индексов, и хранило между перезапусками сервера.
Ну и типа порог срабатывания: "оповещать после квартала неиспользования" (настраиваемо).

Я прощу прощения за некоторую эмоциональность. Просто как в том анекдоте: "...И прошу прощения за неровный почерк, потому что даже прямо сейчас..."
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39836182
uaggster, сделаем :)

Мне идея понравилась. Как быстро получится пока гарантировать не смогу, но будет.
Сейчас новым тулом начал заниматься, который откладывал более двух лет.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39836184
uaggsterПоэтому какой-нибудь дашборд, который индицировал бы ситуацию "вот тут новое говно, неотличимое от старого" - очень нужно.

Могу лишь предложить посмотреть на бесплатный аналог от RedGate:
https://www.red-gate.com/products/dlm/dlm-dashboard/
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39838285
Выложил версию 1.0.0.42 :

Не генерировалась опция ONLINE для missing index

При выборе операции в лукапе и последующей сортировке по любому столбцу выделялась не та строка для которой делалось действие

Добавил возможность фильтрации не только по именам обьектов, но и по маске %

Исправил проблему с DevExpress из-за чего у многих не собирался проект



andy stфишка: create index по missing опцию online=on игнорирует
Исправлено

uaggsterХотелось бы видеть ситуации типа такой:
1. Полные синонимы (т.е. абсолютно идентичные индексы, дубликаты).
2. Синонимы, отличающиеся списком INCLUDE:
Планирую на следующий билд
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39838384
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за утилиту.
Побуду тестером:
1.
Два таймаута на 2 табличках в 2 базах из 20 баз идентичных (разные типы компрессий, и размер) при анализе (сервер не шустрый, может из за него):
Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

Ничего примечательного в этих таблицах кроме 5 и 6 млрд. row, точно такая же табличка в другой базе, но 1,7 млрд. row без таймаута. Размер небольшой, меньше 10 GB. Эти три базы CSA (ColumnStoreArchive clustered).

2.
[ 15:54:28.514 ] Elapsed time: 00:00:00:443. Pre-descibe: 0. Post-describe: 2

наверное r пропущено

3.
Select Databases не настраивается/изменяется размер окна, занимает половину высоты окошка 1920х1080.
imho, либо resize возможность хотелось бы, либо не половину, а всю высоту окна занимать?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39838409
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
архивариус1.

вопрос снимается, увидел настройку таймаута.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39838455
Выложил версию 1.0.0.43 :

Исправил ошибку Arithmetic overflow error for data type tinyint, когда у таблицы более 255 столбцов (смешно, но факт)

В режиме совместиности с 2000-х на 2008R2 из-за опций ARITHABORT/NUMERIC_ROUNDABORT падал запрос с XQuery

Теперь не игнорим при сканировании ошибки выполнения

Увеличили дефолтные значения для максимального размера индекса и execution timeout

Добавили возможность менять размер окна при выборе базы

uaggsterВообще, поиск синонимов и почти синонимов в индексах - был бы очень нужной штукой.
В процессе.

архивариусПобуду тестером:
Что мог исправил. Спасибо за отзыв.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39839303
Выложил версию 1.0.0.44 :

Исправил ошибку, которая возникала от того что в базе есть офлайн файловые группы

Исправил проблему с неверным отображением поля Index Columns

Добавил функционалось по визуализации дублирующих индексов



uaggsterХотелось бы видеть ситуации типа такой:
1. Полные синонимы (т.е. абсолютно идентичные индексы, дубликаты).
2. Синонимы, отличающиеся списком INCLUDE:
3. Частичные синонимы:
Эти 3 индекса могут быть заменены одним, без ущерба для производительности:
4. Ситуации, когда индексы, включая include, содержат одни и те же поля.
Чуток решил упростить, но надеюсь будет норм по юзабельности. Там еще пара багов осталась в визуализации так что сорри. Спешил.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39839397
Выложил версию 1.0.0.45 :

Исправил ошибки при определении дубликатов в индексах
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39842340
Выложил версию 1.0.0.46 :

Подсветка неиспользуемых индексов

Добавлена опция STATISTICS_NORECOMPUTE

Ускорил запросы при получении списка баз данных
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39843391
ЕвгенийGEM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko, провел независимый обзор тулзы:
https://habr.com/ru/post/461277/
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39844899
Выложил версию 1.0.0.47 :

Добавил возможность выбора Scan Mode (LIMITED / SAMPLED / DETAILED)

Добавлено новое поле Page Space Used, которое заполняется если выбрано SAMPLED / DETAILED сканирование

Исправил ошибку с неверным использованием в скриптах опции STATISTICS_NORECOMPUTE = DEFAULT

Исправил ошибку VIEW DATABASE STATE permission denied при сканировании missing index на ажур для базы мастер

Исправил ситуацию когда на форме ErrorBox неверно отображался call stack ошибки

Убрал ошибку при открытии линков в окне About



Очень буду рад фитбекам.
Потому как в прошлом билде накосячил со STATISTICS_NORECOMPUTE и никто даже не сказал :)
Не стесняйтесь конструктивно выражать свое фи.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39845213
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. мне кажется нелогичным, что фильтрация происходит на моменте сканирования по фрагментации и размеру индексов.
это, очевидно, из-за того, что во главу угла ставится фрагментация, но статистика тоже важна/интересна;
2. reorganize - обязательная опция, зачем? (нельзя поставить: индексы, фрагментированные на 30%+ ребилдим, остальные не трогаем);
3. нельзя выделить несколько строчек (чтобы проставить всем один Fix, или поставить/снять галочки).
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39845279
eddie1. мне кажется нелогичным, что фильтрация происходит на моменте сканирования по фрагментации и размеру индексов.
Это было сделано для перфоманса, чтобы не захватывать сильно большие и сильно маленькие индексы.

eddieиз-за того, что во главу угла ставится фрагментация, но статистика тоже важна/интересна;
Недавно начал новый функционал делать где можно отдельно от индексов обслуживать статистику. Но пока времени свободного нет нормально долелать. Как будет готово я выложу новый билд.

eddie2. reorganize - обязательная опция, зачем? (нельзя поставить: индексы, фрагментированные на 30%+ ребилдим, остальные не трогаем);
Здесь можно поступить проще. Получаете список индексов потом фильтруете по колонке Fix. Выбираете все строки и это как раз тот кейс о котором вы говорите.

eddie3. нельзя выделить несколько строчек (чтобы проставить всем один Fix, или поставить/снять галочки).
Мысль хорошая, но пока as desing. Есть много ограничений в DevExpress. Первоначально я так и хотел сделать.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39845397
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,
1. Цветовая расцветка понятна только читающим этот топик. Легенду бы подписать.
2. При клике на раскрашенную строку можно предложить фильтрануть и оставить только те индексы, на основании которых была выставлена такая расцветка.
3. Там же по правой кнопке можно предложить скопировать либо текст ячейки, либо запилить в буфер обмена скрипт на create/disable/drop. Ну или то, что можно через выбор в Fix, но "побыстрому" и только в буфер обмена.
4. Поля таблицы имеют ограничение на максимальную ширину. Пичалька. Приходится ждать либо всплывающей подсказки, либо накликивать скрипт на индекс.
5. Отсутствие подсветки текущей строки тоже печалит, особенно если полей в таблице много и они широкие. Определить активную строку можно только по полю Fix. Частично решит проблему настройка количества фиксированных полей слева, которые отображаются всегда на месте при скроллировании влево-вправо. Но если будет и такое, и подсветка активной строки - будет приятнее.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39845674
andy st1. Цветовая расцветка понятна только читающим этот топик. Легенду бы подписать.
Сделаем.

andy st2. При клике на раскрашенную строку можно предложить фильтрануть и оставить только те индексы, на основании которых была выставлена такая расцветка.
Как-то муторно по правде. Думаю не вариант.

andy st3. Там же по правой кнопке можно предложить скопировать либо текст ячейки, либо запилить в буфер обмена скрипт на create/disable/drop. Ну или то, что можно через выбор в Fix, но "побыстрому" и только в буфер обмена.
Подумаю как это можно реализовать.

andy st4. Поля таблицы имеют ограничение на максимальную ширину. Пичалька. Приходится ждать либо всплывающей подсказки, либо накликивать скрипт на индекс.
Исправим.

andy st5. Отсутствие подсветки текущей строки тоже печалит, особенно если полей в таблице много и они широкие. Определить активную строку можно только по полю Fix. Частично решит проблему настройка количества фиксированных полей слева, которые отображаются всегда на месте при скроллировании влево-вправо. Но если будет и такое, и подсветка активной строки - будет приятнее.
Подумаю как это можно будет сделать.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39845876
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenkoandy st2. При клике на раскрашенную строку можно предложить фильтрануть и оставить только те индексы, на основании которых была выставлена такая расцветка.
Как-то муторно по правде. Думаю не вариант.

внезапно :(
Дополнительный столбик с "Цветовые группы" с подписями типа "Нет", "Дубликат 1" (для группы дублей 1, а их может быть несколько), "Частично 1",2,3,4... и фильтр по нему.
Еще по правой кнопке из менюшки содержимое ячейки текущей строки "добавить/удалить" в фильтр столбика.
Я это всё к чему веду... надо гуй гуёвым делать, а не "слабое подобие левой руки" в виде "слехка покрасявше sqlcmd". Чтоб было приятно делать Analyze.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39845891
andy stдополнительный столбик с "Цветовые группы" с подписями типа "Нет", "Дубликат 1" (для группы дублей 1, а их может быть несколько), "Частично 1",2,3,4... и фильтр по нему.
Сорри, теперь понял :)
Спасибо. Буду думать как сделать
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39849439
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так сказать в тему:
Managing Index Fragmentation
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39855942
Выложил версию 1.0.0.51 :

Возможность выбирать операции по умолчанию (REBUILD/REORGANIZE/UPDATE STATISTICS)

Добавили новую опцию PAD_INDEX

Через командную строку теперь можно создавать missing indexes – /missingindex

Исправили ситуацию, когда в базе была In-Memory файловая группа и запрос missing indexes падал с ошибкой

Исправили проблемы с FILL_FACTOR, NO_RECOMPUTE, PAD_INDEX для случаев, когда таблица секционированная

Переделали логику работы с DATA_COMPRESSED

Кучи можно ребилдилть с опцией ONLINE

Добавлены два столбца Error Message и Warning

По столбцу Warning можно быстро найти дубликаты, частичные дубликаты либо мало использующие оптимизатором индексы

Показываем количество ошибок при сканировании и в момент обслуживания

Добавили возможность закреплять колонку при прокрутке

Увеличили размеры колонок при ресайзе

Добавлена возможность авторесайза столбцов

Возможность сбросить текущий лайаут (для этого раньше приходилось удалять файл .layout)

... и дохрена других мелких изменений и исправлений

Те вещи, которые мы обсуждали ранее, но не вошедшие в этот билд, бережно записаны у меня в беклоге.
И, со временем, в том или ином виде, будут реализованы. Поэтому не ленитесь фитбеки присылать :)
Еще раз спасибо!









...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39856020
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DUBPLICATE
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39856172
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,
Если фрагментация индекса ниже нижней границы reorganize, то мы никогда не узнаем, что это индекс является дублем какого-то другого. Хотя, не мешало бы. Может для разделения аспектов запилить еще одну закладку, на которой уже и отображать дубли, перекрытия и неиспользуемые индексы. А первую оставить на анализ фрагментации. Ну или 2 режима одной таблички: фрагментация/проблемы.
Увеличенной максимальной ширины колонок не хватает :(
OVERLAP это кончено хорошо, но фильтрануть индексы, которые попадают под конкретный OVERLAP не получается - только глазками.

По двойному клику на ячейку можно закидывать её содержимое в фильтр. Если для ячейки такой фильтр предусмотрен.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39856179
andy stЕсли фрагментация индекса ниже нижней границы reorganize, то мы никогда не узнаем, что это индекс является дублем какого-то другого. Хотя, не мешало бы. Может для разделения аспектов запилить еще одну закладку, на которой уже и отображать дубли, перекрытия и неиспользуемые индексы. А первую оставить на анализ фрагментации. Ну или 2 режима одной таблички: фрагментация/проблемы.
Пока бы не хотелось этого делать. Скорее всего черед время обыграю этот кейс по другому.

andy stУвеличенной максимальной ширины колонок не хватает :(
А можно скрин чтобы понять по каким колонкам проблемы? Или просто списком...

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

авторПо двойному клику на ячейку можно закидывать её содержимое в фильтр. Если для ячейки такой фильтр предусмотрен.
Идея хорошая, но сейчас двойной клик это выделение строки. Подумаю в общем... как можно прилепить.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39856220
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenkoandy stУвеличенной максимальной ширины колонок не хватает :(
А можно скрин чтобы понять по каким колонкам проблемы? Или просто списком...

Там простая и слегка извращенная фантазия разработчиков, не ограниченная по поводу длины названий полей и наталкивания их в индексы для быстрого OLAP во времена до-columnstore...
Sergey SyrovatchenkoавторПо двойному клику на ячейку можно закидывать её содержимое в фильтр. Если для ячейки такой фильтр предусмотрен.
Идея хорошая, но сейчас двойной клик это выделение строки. Подумаю в общем... как можно прилепить.
выпадающая менюшка по правой кнопке - наше всё.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39858949
Выложил версию 1.0.0.52 :

Исправлены ошибки по генерации скриптов для Azure

Исправлены мелкие ошибки в UI
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39884738
Выложил версию 1.0.0.53 :

Cannot insert duplicate key когда сканировали индексы на Azure Database
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39886556
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

Спасибо! Я уже в другую контору ушел, но и тут пригождается Ваш помощник, Ваше творение. Еще раз спасибо!
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39887147
Den_KP, рад что Вам прога оказалось полезной :)

Надеюсь чуток свое разгребу и попробую еще наваять пару фич что просили ранее.

В планах ближайших - это сканирование по нескольким серверам за раз + оптимизация работы с колумнсторами (это то что сейчас мне не хватает). Если будет что новое из идей накидывайте :)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39887313
NaM-Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Полезная, интересная утилита. Пользуюсь сейчас ей, но на мой взгляд самый главный её недостаток, что нельзя с её помощью установить план мероприятий, расписание по которому проводить эти работы, чтобы автоматизировать. Пусть это пока и будет никак не связанно/завязанно на студию, но автоматизация наше всё) Для админа это часто определяющий фактор.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39887477
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поставил
вижу как генерить скрпиты
но не вижу как запускать из гуи ?
1?) это спецом так ?

запустил кластерный индекс с дефрагментацией 99.4%
Код: sql
1.
2.
3.
RAISERROR(N'BI_Distribution_Buffer | dbo.MerchVisit | PK_MerchVisit | 37.73 MB', 0, 1) WITH NOWAIT
ALTER INDEX [PK_MerchVisit] ON [dbo].[MerchVisit] REBUILD PARTITION = ALL
    WITH (SORT_IN_TEMPDB = ON, PAD_INDEX = OFF, DATA_COMPRESSION = NONE, ONLINE = OFF, MAXDOP = 0);




и ничего не изменилось
это особенность класетрынх индексов

3?) Какой самый простой сценарий использования на SQL 2012
найти где больше всего дефрагментации - ометить - скоприовать скрпит
и запусить с SSMS ?


ps не знаю баг или фича
после тогк как на sql 2012
Код: sql
1.
2.
3.
4.
RAISERROR(N'BI_Distribution_Buffer | dbo.MerchPartnerAudit_Detail | PK_MerchPartnerAudit_Detail | 181.91 MB', 0, 1) WITH NOWAIT
ALTER INDEX [PK_MerchPartnerAudit_Detail] ON [dbo].[MerchPartnerAudit_Detail] REORGANIZE PARTITION = ALL
    WITH (LOB_COMPACTION = ON);
GO



данный индекс пропадает из списка как класс
и все
т.е он становится не фрагментированным - а показыватся толкьо Top 100 ???
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39887564
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор


запустил кластерный индекс с дефрагментацией 99.4%
Код: sql
1.
2.
3.
RAISERROR(N'BI_Distribution_Buffer | dbo.MerchVisit | PK_MerchVisit | 37.73 MB', 0, 1) WITH NOWAIT
ALTER INDEX [PK_MerchVisit] ON [dbo].[MerchVisit] REBUILD PARTITION = ALL
    WITH (SORT_IN_TEMPDB = ON, PAD_INDEX = OFF, DATA_COMPRESSION = NONE, ONLINE = OFF, MAXDOP = 0);




и ничего не изменилось
это особенность класетрынх индексов



37.73 MB это меньше экстента и дефрагментировать его бессмысленно
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39887589
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123
37.73 MB это меньше экстента
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39887597
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
Yasha123
37.73 MB это меньше экстента

да уж
но все равно это мало в страницах/мегабайтах.
короче, не надо его трогать
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39887845
NaM-Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще пожелания к приложению:
1. Агрегирующая строка по высвобожденному месту, неиспользуемому индексу и т.п., где это имеет смысл.
2. Показывать время выполнения фикса индекса. (пусть не в реальном времени, пусть каждые 5-10-60 секунд обновляется). Например, когда происходит ребилд - непонятно сколько времени он уже пытается отребилбить индекс, только разве что обходными путями - посмотрев когда закончилась предыдущая операция и на текущее время.
3. По-возможности. Отражать дату последнего ребилда/реорганайза индекса/кучи. Можно и отследить как быстро индекс снова повысил фрагментацию, а для кучи можно понять, что она уже проводилась и повторная не требуется, потому что это минимум.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39887967
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123
msLex
пропущено...

да уж
но все равно это мало в страницах/мегабайтах.
короче, не надо его трогать


я брал для примера НЕ большие таблицы
но с бОльшим процентом дефрагментации - чисто для теста

есть и приличные таблицы
с Кластерным индексом где показыает процент дефрагментации > 90%
вопрос скорее об этом - будет ли какой то гешефт после
REbuild или Reorganize
и если да - то как его увидеть в этом же UI

И каков простейший сценарий использования этой тулзы
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39888757
NaM-Catсамый главный её недостаток, что нельзя с её помощью установить план мероприятий, расписание по которому проводить эти работы, чтобы автоматизировать
Есть поддержка коммандной строки и ничего не мешает сделать батник и запускать через него прогу. Ну а сам батник в виндовом шедулере крутить или как нравится. Хоть через дженкинс запускать...

NaM-Cat1. Агрегирующая строка по высвобожденному месту, неиспользуемому индексу и т.п., где это имеет смысл.
Идея хорошая. На досуге попробую прикрутить что-то не сильно сложное для аналитики

NaM-Cat2. Показывать время выполнения фикса индекса. (пусть не в реальном времени, пусть каждые 5-10-60 секунд обновляется). Например, когда происходит ребилд - непонятно сколько времени он уже пытается отребилбить индекс, только разве что обходными путями - посмотрев когда закончилась предыдущая операция и на текущее время.
Очень не скоро появится. Есть проблемы с многопоточностью и пока не прикручу нормальный движок который бы расспаралеливал запуск скриптов делать это пока не буду.

NaM-Cat3. По-возможности. Отражать дату последнего ребилда/реорганайза индекса/кучи. Можно и отследить как быстро индекс снова повысил фрагментацию, а для кучи можно понять, что она уже проводилась и повторная не требуется, потому что это минимум.
В метаданных нет инфы когда индекс когда последний раз REBUILD/REORGANIZE. Есть лишь один косвенный признак когда индекс ребилдился - это дата обновления статистики.

Гулин Федор но не вижу как запускать из гуи ?
Кнопка справа от рефреша

Гулин Федор 3?) Какой самый простой сценарий использования на SQL 2012
найти где больше всего дефрагментации - ометить - скоприовать скрпит
и запусить с SSMS ?
Вот статейка как пользоваться прогой на подобие моей:
https://towardsdatascience.com/sql-server-index-analysis-and-optimization-1edd84d9da
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39899424
Выложил версию 1.0.0.54 :

  • Мелкие исправления в GUI
  • Выделяется текущая строка в гриде
  • Возможность копирования текущей строки в буфер обмена (потом будет доделываться по нормальному)
  • В статус баре показывается размер освобожденного места в базе после обслуживания индексов
  • По умолчанию теперь перестали процессить кучи
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39903157
Выложил версию 1.0.0.55 :

  • Добавил контекстное меню в грид и возможность быстро задавать фильтр по значению
  • Мелкие улучшения в GUI
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39909627
Выложил версию 1.0.0.56 :

  • Окно с настройками опционально показывается при изменении строки подключения
  • Возможность показывать все индексы (давно просили сделать и я сдался :) )
  • Возможность массово проставлять Fix операцию для всех видимых строк через контекстное меню
  • Новые опции вроде установки задеркжи после ребилда
  • Допилил возможность отмены
  • По мелочи улучшения в GUI


Возможно будут косяки потому рад отзывам

В планах со следующего года засесть на более масштабную прогу в которой будет Index Manager и много статистики в реалтайме
Еще раз спасибо за Ваши фидбеки и помощь в развитии продукта!
Всех с наступающими праздниками :)
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39911451
Выложил версию 1.0.0.57 :

  • Показывается более детальная статистики в момент скана и обслуживания индексов
  • Мелкий багфикс
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39921528
Изменения в 1.0.0.58 :
  • Скрипт для получения списка баз стал более функциональным (но и тормозным иногда)
  • В заголовке показываем свободное место по дискам
  • Различные мелкие улучшения в UI
Изменения в 1.0.0.59 :
    Асинхронная загрузка списка баз Исправили ситуацию когда при отмене сканирования все равно продолжали сканить Теперь переносы при генерации скриптов делаются корректные
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39926133
Выложил версию 1.0.0.60 :

  • Исправил ошибку полугодичной давности когда нормально не обслуживались колумнсторы (всем сорри и просьба скачать новую версию если в старой у вас с этим были проблемы)
  • Добавил обработку ошибки когда падает соединение при получении списка баз
  • Мелкие улучшения в GUI
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39931898
imcat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

А можно пару примеров по работе с командной строкой?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39933061
Работа с коммандной строкой описана на гите . Вот мини пример:

Код: sql
1.
SQLIndexManager.exe /connection "Data Source=localhost;Integrated Security=True;" /databases "database1;database2"
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39942003
Выложил версию 1.0.0.61 :

  • Добавил новые столбцы для анализа использования тех или иных индексов
  • Мелкие улучшения в GUI
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39955822
Выложил версию 1.0.0.62 :

  • Некоторые исправления в UI, чтобы удобнее было анализировать статистику использования индексов
  • Исправили ситуацию когда несжатые колумнсторы отбрасывались на этапе фильтрации
  • Поправили на гриде ситуацию, когда не показывался признак о том что индекс мало используется
  • Добавился стартовый экран и чуть ускорили загрузку
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39964589
Выложил версию 1.0.0.63 :
  • Для heaps есть возможность создавать кластерные колумнсторы для более эффективного сжатия данных (2016+)
  • Убрали флики при ручном рефреше списка баз данных
  • Добавили новые опции по фильтрации: "игнорировать сжатые кучи", "не показывать таблицы где менее 1000 строк"
  • Немного ускорили загрузку приложения
  • Мелкие правки в UI
Возможность в несколько потоков индексы обслуживать пока в разработке.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39966809
Выложил версию 1.0.0.64 :
  • Убрали лишние библиотки DevExpress (5 Мб непойми чего)
  • Убрали функциональность экспорта результатов
  • Оптимизация ресурсов
  • Мелкие правки в UI
В релиз хотел включить функциональность показывать даты с учетом локального времени, времени сервера и UTC.
Вопрос насколько это кому нужно?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39968752
Korkunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,
Hi.

Сергей,
пож-та распиши более подробно по командной строке.
В частности, мне нужно подключиться к скуль-серверу MSSQLSERVER пользователем User1 с паролем 123.

Спасибо.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39969636
Korkunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще прошу уточнить по статистике:
STATISTIC_NORECOMPUTE - это НЕ ОБНОВЛЯТЬ СТАТИСТИКУ ?
STATISTIC_SAMPLE_PERCENT - не понятно на что влияет

И на что влияют это два параметра ?

Я хочу понять: обновляется ли статистика при работе вашей программы в автомате (запуск с командной строки SQLIndexManager.exe /connection "Data Source=localhost;Integrated Security=True" /databases "tmp1" ).

При ручном запуске ваша программа сама определяет что делать с индексами (Колонка Fix), не зависимо от того как установлен STATISTIC_NORECOMPUTE в колонке Fix у меня проставляется REBUILD или REORGANIZE. А статистика обновляется или нет ? Не понятно... Или нужно руками для каждого индекса в колонке Fix выбирать UPDATE STATISTIC ***? Но это очень не удобно...
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39969752
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39970037
NaM-Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko
Выложил версию 1.0.0.64 :
  • Убрали лишние библиотки DevExpress (5 Мб непойми чего)
  • Убрали функциональность экспорта результатов
  • Оптимизация ресурсов
  • Мелкие правки в UI
В релиз хотел включить функциональность показывать даты с учетом локального времени, времени сервера и UTC.
Вопрос насколько это кому нужно?


Достаточно указывать какое-то одно время.

Также предлагаю рассмотреть новую функциональность - отстрела процесса. Бываю случаи запуска обслуживания через ваш интерфейс в рабочее время и в случае долгого прохождения перестроения индекса хочется его исключить в этот проход и запустить позже, когда нагрузка на сервер от пользователей будет меньше, а остальные индексы чтобы продолжили обслуживаться. Сейчас приходится делать это вручную через студию.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39970041
NaM-Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Также прошу рассмотреть возможность сохранения настроек по-умолчанию, которые есть возможность менять через интерфейс. Для нового релиза приходится обновлять ПО и все настройки естественно слетают. Видимо отдельный файл с конфигом или еще как.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39974151
Выложил версию 1.0.0.65 :

  • Автоскролл когда идет обслуживание индексов
  • Немного поменяли формат сортировки индексов и приоритет их обслуживания
В частности, мне нужно подключиться к скуль-серверу MSSQLSERVER пользователем User1 с паролем 123
Там все достаточно просто и примеры я приводил . В вашем случае будет что-то такое:

/connection "Data Source=HOMEPC\SQL_2017;User Id=user1;Password=pass1"

KorkunovЯ хочу понять: обновляется ли статистика при работе вашей программы в автомате
Нет

KorkunovПри ручном запуске ваша программа сама определяет что делать с индексами (Колонка Fix), не зависимо от того как установлен STATISTIC_NORECOMPUTE в колонке Fix у меня проставляется REBUILD или REORGANIZE. А статистика обновляется или нет ? Не понятно... Или нужно руками для каждого индекса в колонке Fix выбирать UPDATE STATISTIC ***? Но это очень не удобно...
Но идея добавить reorganize + update stats мне понравилась. Как время появится сделаю

NaM-CatДля нового релиза приходится обновлять ПО и все настройки естественно слетают. Видимо отдельный файл с конфигом или еще как.
Если вы хотите сбросить настройки по умолчанию. Есть несколько вариантов. Закрываем приложение удаляем файлы config в котором хранятся настройки и коннекшены. И по желанию файл layout в котором текущие настройки грида (то же можно сделать если в контекстном меню выбрать restore default layout)

NaM-CatТакже предлагаю рассмотреть новую функциональность - отстрела процесса. Бываю случаи запуска обслуживания через ваш интерфейс в рабочее время и в случае долгого прохождения перестроения индекса хочется его исключить в этот проход и запустить позже, когда нагрузка на сервер от пользователей будет меньше, а остальные индексы чтобы продолжили обслуживаться. Сейчас приходится делать это вручную через студию.
На данный момент физически это сделать не могу из-за недостатка времени. В будующем возможно такое появится
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #39974152
Отдельно выложил мини вики по приложению
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40006446
NaM-Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, параметр / commandtimeout в командной строке и EXECUTION_TIMEOUT в интерфейсе одно и тоже? Если да, то в интерфейсе есть ограничение на 1800 сек, действует ли это ограничение на командную строку?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40007756
Юзер9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему программа может не запускаться под Win 10?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40008996
NaM-CatПодскажите, параметр / commandtimeout в командной строке и EXECUTION_TIMEOUT в интерфейсе одно и тоже? Если да, то в интерфейсе есть ограничение на 1800 сек, действует ли это ограничение на командную строку?
Прошу прощения что с запозданием отвечаю.

commandtimeout и EXECUTION_TIMEOUT это одно и тоже. Просто хреново назвал когда названия придумывал.

На командную строку ограничения не действуют из настроек. Если параметр задан, то используется он. Если нет, то берется дефолтный - 120с.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40008997
Юзер9, причин может быть куча. Как вариант есть ли у вас права администратора? Антивирус не блокирует (цифровой же подписи нет)? Что пишет event log?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40009317
Юзер9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko,
права администратора есть, антивирус сообщений никаких на выдаёт. Event log где расположен?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40009557
Юзер9,
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\Event Viewer.lnk
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40010015
Юзер9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40010136
NaM-Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уж потерял надежду получить ответ =)
Дело в том, что попытался этот параметр выставить в значение 2500 в командной строке, а по факту у меня срабатывал 120с, вот и хочу понять, как всё же его обойти.

Sergey Syrovatchenko
NaM-CatПодскажите, параметр / commandtimeout в командной строке и EXECUTION_TIMEOUT в интерфейсе одно и тоже? Если да, то в интерфейсе есть ограничение на 1800 сек, действует ли это ограничение на командную строку?

Прошу прощения что с запозданием отвечаю.

commandtimeout и EXECUTION_TIMEOUT это одно и тоже. Просто хреново назвал когда названия придумывал.

На командную строку ограничения не действуют из настроек. Если параметр задан, то используется он. Если нет, то берется дефолтный - 120с.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40029711
startDBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

спасибо за отличную программу!
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40029775
NaM-CatДело в том, что попытался этот параметр выставить в значение 2500 в командной строке
Странно. Я проверял и у меня нормик все работало. По свободе пересмотрю еще раз

startDBAспасибо за отличную программу
Велкомс. Рад что понравилось с ней работать. Если есть предложения в плане того что стоило бы добавить смело предлагайте
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40066495
Выложил версию 1.0.0.66 :

  • Исправлена ситуация когда при обновлении статистики сбрасывалась опция NO_RECOMPUTE
  • Добавлены новые столбцы "No Recompute" и "Stats Sampled"
  • Все DATETIME столбцы показываются в локальном часовом поясе пользователя
  • Добавил в контектное меню возможность быстро исключать индексы из общего списка
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40070511
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko
Выложил версию 1.0.0.66 :

  • Исправлена ситуация когда при обновлении статистики сбрасывалась опция NO_RECOMPUTE
  • Добавлены новые столбцы "No Recompute" и "Stats Sampled"
  • Все DATETIME столбцы показываются в локальном часовом поясе пользователя
  • Добавил в контектное меню возможность быстро исключать индексы из общего списка

Я - обычный юзер: Запустил приложение, выбрал базу, это понятно, выскочило окно с сеттингами, что-то изменил.
Далее - что оно делает? ...
я хотел проанализировать пару индексов, найтинедостающие, ничего не ребилдить, не реорганизовывать.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40070516
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще: оно создавало описание, ладно, завершилось.
Далее,
1. где увидеть списко недостающих индексов?
2. отметил пару индексов для ребилда - как запустиь процесс?
3. как запутисть реорганизе индекса?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40070733
Ролг Хупин, доброго и хороший вопрос... отвечу последовательно.

Прога как бы простая и делал ее больше под свои нужды и чтобы народу было удобно. В рамках выбранных БД исходя из настроек выгребается список все индексов и далее в имеющемся списке мы можем с каждым индексом сделать разные операции (скажем обновить статистику, ребилдить, в некоторых случаях поддерживается миграция в колумнстор и тд).

Писал по этому поводу инструкцию надеюсь она будет полезной.

1. где увидеть списко недостающих индексов?
Выбрать в настройках MISSING INDEXES и сделать рефреш (после для таких индексов будет сгенерен CREATE INDEX). Если такие индексы есть в dm_db_missing_index_group_stats (при этом учитывается что там еще отфильтровывается по ожидаемому размеру - если проще то просто размеры индексов можно выставить на мин-макс в настройках)

2. отметил пару индексов для ребилда - как запустиь процесс?
Вверху drop down button становится доступный если выбран хотя бы один индекс для обслуживания

3. как запутисть реорганизе индекса?
Также как и все остальное. Выбрали те пункты в гриде что вам интересны и запустили в работу
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40078423
Юзер9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей, посоветуйте скрипт для дефрагментации. Программа Ваша всем хороша, да только баз у нас свыше полусотни. Запускать её на каждой базе вручную - упаришься.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40078471
Юзер9, а что мешает использовать командную строку? Если все базы на одном сервере то это еще проще
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40078552
Юзер9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скриптом, рассылаемым батником, я могу запустить дефрагментацию на всех базах последовательно, не дожидаясь выполнения ранее запущенных. Программа будет базы обрабатывать по одной. У меня их 84 штуки. Поэтому мне нужен именно скрипт. И батник под него готов и проверен.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40078580
Юзер9Скриптом, рассылаемым батником, я могу запустить дефрагментацию на всех базах последовательно, не дожидаясь выполнения ранее запущенных
Я прошу прощения, а чем повершел в рамках которого можно для каждого сервера в многопотоке запустить обслуживание? Это конечно изврат и признаю что скриптом лучше. Потому почему бы такой вариант не заюзать? Либо тот же скрипт от Ola.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40078775
Юзер9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40078786
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это все боты общаются?
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40079265
Relic Hunter, я вроде не бот. Человек чет спрашивает а я "не отбиваю" какой бизнес-кейс он решает. Если хочется параллелизм так я его пока не докрутил (расчет был на то чтобы не нагружать сервер одновременным редилдом нескольких индексов). Да и не все так просто - блокировки могут быть, дедлоки и прочее. И пока все кейсы предусмотреть у меня не получается.
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40080390
Выложил версию 1.0.0.67 / 1.0.0.68 :

  • Исправил ошибку 'STATISTICS_NORECOMPUTE' is not a recognized ALTER INDEX REBUILD PARTITION option
  • Поправил ситуацию «Если хотя бы у одной базы побились метаданные скрипт получения списка баз ничего не возвращал»
  • Улучшил контекстное меню в гриде
  • Добавил возможность делать TRUNCATE TABLE (проверяются только простые кейсы вроде «есть ли FK»)
  • Улучшил авто-скроллинг в гриде при обслуживании индексов
  • Удалил возможность между командами вставлять Thread.Sleep
  • Косметические изменения в ErrorBox
  • Добавил подсказки в статус бар
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40080614
paulsharry23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
there are also such cases when it is necessary to clearly demonstrate, justify the stages / choice of works and visually wrap everything in a beautiful wrapper
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40109939
Выложил версию 1.0.0.69 :

  • Добавили новые опции для игнорирования индексов, статистика которых не требует обновления
  • Теперь значения столбцов StatsSampled/RowsSampled обновляются в момент обслуживания
  • Пофиксили проблему при генерации truncate table/partition для колумстор индексов
  • Добавили возможность LIKE %...% фильтрации в комбо-боксе выбора имени Server-а
  • Пароль от SQL аутефикации сохраняется в шифрованном виде по дефолту
...
Рейтинг: 0 / 0
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40137631
Думаю многие из тех кто заходил на sql.ru меня знает. Сам я родом из Харькова и посильно старался отвечать на вопросы коллег и поделиться своим опытом... в фоне пипил SQL Index Manager. Сейчас у меня нет желания тут находиться и вовсе не потому что я «нацик», «бендеровец», «укроп» или «русофоб» поскольку до этого я никогда не касался политики. Мне сложно оставаться в стороне от того что русские делают на моей родной земле Украине. Сейчас я пишу эти строки, а рядом ваши солдаты расстреливают жилые дома из градов и САУ и я эту дичь вижу уже неделю... в мирном городе в тех районах где нет военной техники.

Я видел трупы на улицах после ваших обстрелов и бомбардировок. Как вы считаете классно видеть еще живую бабушку которой снарядом оторвало ноги и ее пытались спасти при мне. Какие ощущения когда взрывной волной тебя сбивает с ног, а ты потом трясёшься два часа не понимая что происходит. Многие из вас ссыкуны потому что боитесь своего режима пока мы защищаем свою страну от вас. Именно от вас... кто стрелял в мою машину когда я пытался найти лекарства пожилым людям... это вы раскидываете мины противопехотные в жилых районах... именно вы обстреливаете из градов наши дома... именно вы убиваете детей... нравится стрелять с танков по атомным электростанциям?... там вам тоже прейдёт конец... давайте... мы умрем медленно но вы тоже... доллар уже по 118 рублей, а за Уралом 200... вы же этого хотите... так давайте и дальше поддерживайте Путина и его режим.

Наше дело правое и ваши соболезнования и поддержка мне не нужны. Хотите это прекратить выходите на площади... а если вы в душе гниды кидайте это на модерацию. Поскорее меня тут заблочат и я буду знать как я прав!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
    #40138646
tomcat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko [игнорируется] 

30 лет употребления евро-наркоты не прошли даром. Старый добрый метод англосаксов подчинения целых народов.
Интересно наркоманы с 30 летним стажем лечатся? есть примеры?
...
Рейтинг: 0 / 0
213 сообщений из 213, показаны все 9 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]