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

Откуда: Харьков
Сообщений: 106
Ролг Хупин
кстати, 1 может быть опасно

Спорить конечно же не буду. Там приколов с этим системным представлением много (когда база AUTO_CLOSE, когда индексы пересоздаются и тд), но тем не менее :)
Эта инфа для наглядности показывается, а там пользователь уже сам решает.
10 июн 19, 09:32    [21905689]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
andy st
Member

Откуда:
Сообщений: 755
А можно попросить первую картинку из статьи на хабре поставить в качестве заставки к программе.
18 июн 19, 10:54    [21910382]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

Откуда: Харьков
Сообщений: 106
Сегодня не пятница, но накинуть хайпа необходимо :)
Для всех кому интересно выложил на Хабре трушную историю о том как делал туловину свою и почему.

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

Технический пост о том как все устроено тоже скоро будет.
18 июн 19, 10:56    [21910387]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

Откуда: Харьков
Сообщений: 106
andy st
А можно попросить первую картинку из статьи на хабре поставить в качестве заставки к программе.

Я подумаю )))
Главное чтобы народ пользовался тулом

Картинка с другого сайта.
18 июн 19, 10:59    [21910391]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

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

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

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

Картинка с другого сайта.

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

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

И очень хочется получить фитбек от всех желающих в плане... что еще в прогу добавить... что удобно / неудобно... баги / фичи и тд.
Заранее спасибо.
23 июн 19, 10:53    [21913533]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
andy st
Member

Откуда:
Сообщений: 755
Sergey Syrovatchenko,
Вариант сделать для missing index отдельную закладку с отдельным адекватным набором столбиков не рассматривался?
По двойному клику на строке - детализация по индексу. там же опция по оценке изменения типа сжатия...
24 июн 19, 13:26    [21914014]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4967
andy st
Sergey Syrovatchenko,
Вариант сделать для missing index отдельную закладку с отдельным адекватным набором столбиков не рассматривался?

это дельная мысль
а то на лицо перенасыщение данными
"усложнять - просто, упрощать - сложно" (с) Мейер
24 июн 19, 13:34    [21914036]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

Откуда: Харьков
Сообщений: 106
andy st
Вариант сделать для missing index отдельную закладку с отдельным адекватным набором столбиков не рассматривался?

Честно так и хотел делать, но в коде завязка на основной грид и весь UI на нем основывается. Возможно в будующем разобью на закладки.

andy st
По двойному клику на строке - детализация по индексу. там же опция по оценке изменения типа сжатия...

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

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

komrad
а то на лицо перенасыщение данными

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

Если есть что-то явно лишнее на UI смело говорите, постараюсь исправить.
25 июн 19, 15:32    [21914991]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4967
Sergey Syrovatchenko
komrad
а то на лицо перенасыщение данными

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

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


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

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

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

Откуда: Харьков
Сообщений: 106
komrad
тут дело в позиционировании приложения
если оно для опытных дба, то и "инженерный" вид не помеха

Изначально планировалось для новичков, но по мере добавления новых фич получилось, как мне хочется надеяться, что-то универсальное.
Сразу хочется пошутить словами коллеги "универсальные вещи работают универсально плохо"

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

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

Если что буду очень рад фитбекам :)
25 июн 19, 20:45    [21915168]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
andy st
Member

Откуда:
Сообщений: 755
Sergey Syrovatchenko,
по индексам можно еще показывать используемые файловые группы и файлы + свободное место на дисках с этими файлами.
В настройки - критический % свободного места на дисках и подсветка красненьким, что мол близится "ойвсё!"
Если считать, что управление дисковым пространством относится к обслуживанию индексов, то можно сохранять статистику свободному месту и, как вариант, на основе пары-тройки срезов, между которыми больше суток, считать прогноз по заполнению диска.
Исторические данные по самим индексам тоже могут пригодиться для каких-нибудь веселых картинок.
26 июн 19, 06:33    [21915260]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1647
Я бы еще сильно рекомендовал в генерящихся T-SQL скриптах поменять все
PRINT '.....'
на
RAISERROR(N'.....', 0,1) WITH NOWAIT;

Дело в том, что PRINT он буферезируется, и, частенько, в больших и нагруженных скриптах, сообщения копятся, копятся в буфере а потом, только, разом выдаются.
Т.е. мы не видим процесс, а, только, по окончанию, видим как оно отработало.
26 июн 19, 10:58    [21915401]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

Откуда: Харьков
Сообщений: 106
Yuri Abele
RAISERROR(N'.....', 0,1) WITH NOWAIT

В следующем билде эта правка будет.

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

Идея принята. Подумаю как ее можно будет оформить в рамках приложения

+ было бы полезно видеть на этапе выбора баз данных свободное место в файлах данных и логе? (если да, то выгребание этой инфы чуток замедлит основной запрос)
26 июн 19, 12:14    [21915459]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1647
Sergey Syrovatchenko
+ было бы полезно видеть на этапе выбора баз данных свободное место в файлах данных и логе? (если да, то выгребание этой инфы чуток замедлит основной запрос)

Если использовать ту логику (перехватывается через Profiler), которую SSMS в отчете "Disk usage by Table" использует, то задержка будет, практически, не заметна.
26 июн 19, 14:20    [21915587]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

Откуда: Харьков
Сообщений: 106
Yuri Abele
Если использовать ту логику (перехватывается через Profiler), которую SSMS в отчете "Disk usage by Table" использует, то задержка будет, практически, не заметна.

Если говорить за этот отчет, то там все через sys.allocation_units данные выгребаются, но вопрос стоит в том чтобы подсчитать занимаемое место по всем базам одним запросом. А это делать прийдется итерационно (других способов увы не знаю)
26 июн 19, 14:33    [21915605]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

Откуда: Харьков
Сообщений: 106
Имел ввиду такого рода код:

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
26 июн 19, 14:45    [21915615]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4967
Sergey Syrovatchenko
Имел ввиду такого рода код:



посмотрите в сторону sys.dm_db_file_space_usage
26 июн 19, 15:29    [21915637]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

Откуда: Харьков
Сообщений: 106
komrad
посмотрите в сторону sys.dm_db_file_space_usage

Этот вариант тоже рассматривал. Табличная функция выбирает данные в разрезе текущей базы.
26 июн 19, 15:50    [21915656]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4967
Sergey Syrovatchenko
komrad
посмотрите в сторону sys.dm_db_file_space_usage

Этот вариант тоже рассматривал. Табличная функция выбирает данные в разрезе текущей базы.


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

+
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 

26 июн 19, 17:15    [21915716]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
andy st
Member

Откуда:
Сообщений: 755
Sergey Syrovatchenko
+ было бы полезно видеть на этапе выбора баз данных свободное место в файлах данных и логе? (если да, то выгребание этой инфы чуток замедлит основной запрос)

А как же веяния в разработке "современных" приложений - долго не запускаться, сразу чтонить показать, остальное показать "как-нибудь" и в фоне догрузить?
Так и тут: старый запрос по бд, показ таблички с всеми столбиками, включая свободное место с надписью "получение данных".
И фоновым потоком уже читать детализацию по базам и подменять "получение.." на циферки.
Жаждет человек увидеть данные по свободному месту - дождется, не актуально - сразу пойдет дальше.
27 июн 19, 06:20    [21915895]     Ответить | Цитировать Сообщить модератору
 Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
Sergey Syrovatchenko
Member

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

  • Добавил возможность смотреть после рефреша размер свободного места в файлах
  • Добавил поиск в диалог выбора базы
  • Исправлена ошибка с квотированием (специально для тех кто людит добавлять ' ] [ вот такие символы к именам обьектов )
  • По просьбе Yuri Abele при генерации скрипта поменял PRINT на RAISERROR WITH NOWAIT

    Картинка с другого сайта.

    Есть подозрение что расширенный запрос по получению списка баз может тормозить.
    У кого есть возможность проверьте плиз.
    Особенно если у вас есть много баз в AUTO_CLOSE.
  • 29 июн 19, 13:44    [21917467]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Sergey Syrovatchenko
    Member

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

    Чуток поправил GUI.
    29 июн 19, 15:37    [21917489]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Yuri Abele
    Member

    Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
    Сообщений: 1647
    Здорово! Спасибо!
    1 июл 19, 16:34    [21918332]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    andy st
    Member

    Откуда:
    Сообщений: 755
    Sergey Syrovatchenko,
    А можно еще показать свободное место на диске расположения файлов базы и логов?
    Правда, придётся переделывать табличку, чтобы файлы и файловые группы прикрутить.
    Ну и печалит невозможность сортировать по полю "selection". Типа сначала выбранные, потом остальные. Как по базам, так и по индексам.
    фишка: create index по missing опцию online=on игнорирует
    2 июл 19, 07:16    [21918668]     Ответить | Цитировать Сообщить модератору
     Re: SQL Index Manager - бесплатная утилита по обслуживанию индексов для SQL Server и Azure  [new]
    Mind
    Member

    Откуда: Лучший город на Земле
    Сообщений: 2296
    komrad
    как в SQLCoPilot, например -
    https://sqlpadre.wordpress.com/2014/02/06/sql-copilota-software-review/
    что то сайт то у них не открывается.
    2 июл 19, 22:37    [21919499]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7   вперед  Ctrl      все
    Все форумы / Microsoft SQL Server Ответить