powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
25 сообщений из 213, страница 1 из 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
25 сообщений из 213, страница 1 из 9
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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