Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как измерить эффективность оптимизации?  [new]
Mikhaylo
Member

Откуда:
Сообщений: 46
Обычная ситуация: работает сервер, десятки юзеров, тысяча таблиц. Делаем какую-нибудь оптимизацию и хотим "померять" результат. Вопрос: какую (скалярную!) метрику выбрать? Среднюю загрузку процессора? Так количество юзеров может меняться. Поделить среднюю загрузку проца на количество транзакций в единицу времени? Кто что думает, уважаемые коллеги?
11 янв 12, 13:06    [11884375]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Mikhaylo,

Если "какую-нибудь" оптимизацию, то "какую-нибудь" метрику. Ведь зависит от того что вы оптимизируете. Если например I/O то и смотрите на эти показатели, если процессор, то его загрузку, если конкретный запрос, то например время и т.д.
11 янв 12, 13:14    [11884453]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
Mikhaylo
Member

Откуда:
Сообщений: 46
SomewhereSomehow,
если I/O, то понятно. А всё остальное так или иначе повлияет на загрузку процессора (да и I/O тоже). Интересно же универсальную метрику подобрать. Что Вы думаете об отношении средней загрузки процессора к количеству транзакций в минуту, скажем? Может, уже кто-нибудь придумал другой синтетический критерий?
11 янв 12, 13:24    [11884595]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mikhaylo
Может, уже кто-нибудь придумал другой синтетический критерий?

Оптмизацию же проводят для устранения узкого места. А не просто так
А это узкое место вычислялось при измерении каких то метрик
11 янв 12, 13:27    [11884641]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Mikhaylo,

Семь наиболее полезных счётчиков эффективности
Счётчики производительности SQL Server и Windows
11 янв 12, 13:29    [11884663]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
Mikhaylo
Member

Откуда:
Сообщений: 46
Glory,
Хорошо. Пусть узким местом является большая таблица, с которой интенсивно работают на вставку/редактирование и на выборку. Пусть у Вас есть выбор - 1. создать индекс для выборки, которая выполняется ИНОГДА. Но это замедлит операции обновления; 2. удалить индекс, который используется для редко выполняемой выборки. Тогда выборка будет выполняться дольше. Но выигрыш от ускорения обновлений может тоже "сыграть".
Обычно мы смотрим на CPU и блокировки, но если Вы не будете знать, что юзера пошли обедать, то получите неправильный результат :-)
Я же хочу, чтобы метрика была инвариантна (насколько это возможно) к количеству пользователей. В этом и заключается вопрос. А говорить, что такой подход будет неточным не надо, это и так ясно. Любое агрегирование - потеря информации. В том числе и счетчиков производительности.
11 янв 12, 14:02    [11885066]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
Mikhaylo
Member

Откуда:
Сообщений: 46
Если в W7 заглянуть в свойства "моего компьютера", то можно увидеть индекс производительности windows. Просто абстрактное число, в которое включена производительность процессора, и память с ее скоростью и объемом, и производительность дисковой подсистемы. Вот что-то подобное для sql сервера нужно. Чтобы посмотреть, оптимизация дала результат или в целом ухудшила ситуацию.
11 янв 12, 14:22    [11885294]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Mikhaylo
Если в W7 заглянуть в свойства "моего компьютера", то можно увидеть индекс производительности windows. Просто абстрактное число, в которое включена производительность процессора, и память с ее скоростью и объемом, и производительность дисковой подсистемы. Вот что-то подобное для sql сервера нужно. Чтобы посмотреть, оптимизация дала результат или в целом ухудшила ситуацию.
У меня для вас плохие новости - такого числа нет.
11 янв 12, 14:32    [11885382]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mikhaylo
Я же хочу, чтобы метрика была инвариантна (насколько это возможно) к количеству пользователей. В этом и заключается вопрос. А говорить, что такой подход будет неточным не надо, это и так ясно. Любое агрегирование - потеря информации. В том числе и счетчиков производительности.

Нельзя одновременно ускорить противоположные операции - чтение и запись в данном случае.
Соотношение читающих и пищущих пользователей и будет вашей синтетитической метрикой.
11 янв 12, 15:12    [11885749]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Mikhaylo
Если в W7 заглянуть в свойства "моего компьютера", то можно увидеть индекс производительности windows. Просто абстрактное число, в которое включена производительность процессора, и память с ее скоростью и объемом, и производительность дисковой подсистемы.

Это число придумали для тупых юзеров, которым гигагерцы и мегабайты ни о чем ни говорят. Подразумевается что "пользователи" SQL Server'а умнее и им такие странные обобщенные показатели ни к чему.

А вообще ерунду вы какую то придумали. Вам это в отчете о проделанной работе надо написать? Типа сервер стал работать оптимальнее на 3.72%? А если Вася который вчера фигачил кучу отчетов сегодня не пришел на работу и все остальные запросы стали летать? Как это все учитывать?

Если вам надо некоторую абстрактную цифру ни о чем, то можно попробовать посчитать суммы из sys.dm_exec_query_stats и поделить на execution_count.
12 янв 12, 04:38    [11889592]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
моего компьютера дала результат
Guest
Mikhaylo
Если в W7 заглянуть в свойства "моего компьютера", то можно увидеть индекс производительности windows. Просто абстрактное число, в которое включена производительность процессора, и память с ее скоростью и объемом, и производительность дисковой подсистемы. Вот что-то подобное для sql сервера нужно. Чтобы посмотреть, оптимизация дала результат или в целом ухудшила ситуацию.

описан показатель "средняя температура по больнице". там взлетело, тут умерло. в целом - "оптимизация дала результат".

как уже правильно заметили, отправной точкой был какой-то реальный показатель неоптимизированности.
результат, соответственно, имеет смысл сравнивать с ним.
перед тем как приступать к оптэмэзэ, как и с любой другой задачей, нужно оценить на что это может повлиять.
благодаря такой предварительной мозгооценке возможных последствий, по завершении оптэмэзэ будет возможность оценить как внесенные изменения повлияли на вполне конкретные куски системы.
12 янв 12, 09:25    [11889875]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
Mikhaylo
Если в W7 заглянуть в свойства "моего компьютера", то можно увидеть индекс производительности windows. Просто абстрактное число, в которое включена производительность процессора, и память с ее скоростью и объемом, и производительность дисковой подсистемы. Вот что-то подобное для sql сервера нужно. Чтобы посмотреть, оптимизация дала результат или в целом ухудшила ситуацию.


Не забудьте, что общая оценка, определяется наименьшей оценкой, так что если опираться на это, ищите самое слабое место (обычно I/O) и оценивайте.
12 янв 12, 10:00    [11890035]     Ответить | Цитировать Сообщить модератору
 Re: Как измерить эффективность оптимизации?  [new]
Mikhaylo
Member

Откуда:
Сообщений: 46
Mind
А вообще ерунду вы какую то придумали. Вам это в отчете о проделанной работе надо написать? Типа сервер стал работать оптимальнее на 3.72%? А если Вася который вчера фигачил кучу отчетов сегодня не пришел на работу и все остальные запросы стали летать? Как это все учитывать?

Если вам надо некоторую абстрактную цифру ни о чем, то можно попробовать посчитать суммы из sys.dm_exec_query_stats и поделить на execution_count.


Не очень вежливо, но за конструктивность спасибо. Оптимизация железа задача более очевидная, чем оптимизация запросов. Памяти побольше, диски пошустрее - ясно, что производительность выше. Надо именно от оптимизации запросов плясать, согласен. Попробую взять TOP N самых "тяжелых" запросов и для них собирать показатели.

Кстати, извиняюсь, если уже было: у меня ни typeperf не работает, ни в sysperfinfo CPUusage% информации нет. Лечится?
12 янв 12, 13:03    [11891712]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить