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


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