Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выявление "тяжелый" запросов / 23 сообщений из 23, страница 1 из 1
21.06.2021, 14:39
    #40079155
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
привет
ребята подскажите пожалуйста как можно выявить топ запросов которые тратят больше всего ресурсов?
топ 10 по косту
топ 10 по времени выполнения
топ 10 нагрузка на диски
топ 10 запросов для работы которых потребовалось больше всего дискового пространства на tempdb (то есть из-за которыхз выросла база tempdb)

Может у кого есть уже наработки
...
Рейтинг: 0 / 0
21.06.2021, 15:27
    #40079163
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist,

sys.dm_exec_query_stats

касательно статистики использования tempdb сможете получить только в момент выполнения запросов, хранения в разрезе отдельных запросов на моей памяти нет, если не настраивать отдельные xEvent
...
Рейтинг: 0 / 0
21.06.2021, 15:47
    #40079170
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
felix_ff,

подскажите пожалуйста а как можно получить информацию по запросам которые увеличивают tempdb на тек момент?
...
Рейтинг: 0 / 0
21.06.2021, 15:52
    #40079171
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist,

за это отвечают два представления
sys.dm_db_session_space_usage
sys.dm_db_task_space_usage

можете погуглить что нибудь в формулировке приближенной к: sql server track queries consuming tempdb
...
Рейтинг: 0 / 0
21.06.2021, 20:08
    #40079229
flexgen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist
привет
ребята подскажите пожалуйста как можно выявить топ запросов которые тратят больше всего ресурсов?
топ 10 по косту
топ 10 по времени выполнения
топ 10 нагрузка на диски
топ 10 запросов для работы которых потребовалось больше всего дискового пространства на tempdb (то есть из-за которыхз выросла база tempdb)

Может у кого есть уже наработки


Версия SQL Server какая? Начиная с версии SQL 2016 появился Query store feature , который предназначен для мониторинга производительности SQL Server.
...
Рейтинг: 0 / 0
22.06.2021, 02:27
    #40079252
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist,

Тут поищите, может что пригодится
https://www.sql.ru/blogs/dwh/1119
...
Рейтинг: 0 / 0
22.06.2021, 03:39
    #40079253
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Лучшего за бесплатно еще не придумали. http://whoisactive.com/
...
Рейтинг: 0 / 0
22.06.2021, 09:53
    #40079277
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
...
Рейтинг: 0 / 0
22.06.2021, 12:47
    #40079321
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
привет
спасибо всем за отчеты
но в большинстве они предлагают возможность узнать какой из запросов осуществляет запись в tempdb на текущий момент
мне же нужно собрать некую статистику по запросам и в начале рабочего дня выгрузить отчет - какие запросы больше остальных использовали пространство на tempdb за вчерашний день

был пример запроса тут https://qastack.ru/dba/19870/how-to-identify-which-query-is-filling-up-the-tempdb-transaction-log
но там запрос предполагает выполнение в цикле и далее я в этом цикле через merge могу обновлять и добавлять запросы и собирать статистику, но что-то как-то такой подход не совсем мне кажется рациональным

xEvent - как с помощью него добиться нужного мне результата совсем не понял
...
Рейтинг: 0 / 0
22.06.2021, 13:47
    #40079339
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Relic Hunter
Лучшего за бесплатно еще не придумали. http://whoisactive.com/


sp_blitzwho тоже очень неплох и в некоторых случаях выручал, когда sp_whoisactive "висел"
...
Рейтинг: 0 / 0
22.06.2021, 15:50
    #40079381
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist,

а смысл? Что вы намерены делать с запросами, которые используют tempdb? А если это разовый запрос? Копаете где светло, по-моему, а не где потеряли.
...
Рейтинг: 0 / 0
22.06.2021, 16:10
    #40079386
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Владислав Колосов,
как в чем смысл? есть запрос который периодически забивает пространство на диске путем увеличения размеров tempdb, хочу выявить его ( и выявлять подобные в будущем)
...
Рейтинг: 0 / 0
22.06.2021, 16:19
    #40079391
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist,

Так, всё сообщение не осилили, видимо. Тогда вопросы по частям: Что вы намерены делать с запросами, которые используют tempdb?
...
Рейтинг: 0 / 0
23.06.2021, 00:45
    #40079491
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist
Владислав Колосов,
как в чем смысл? есть запрос который периодически забивает пространство на диске путем увеличения размеров tempdb, хочу выявить его ( и выявлять подобные в будущем)


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

создайте xEvent что то типа такого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create event session [tempdb_growth] on server
ADD EVENT sqlserver.database_file_size_change  (
      ACTION (sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.tsql_stack, sqlserver.username)
      WHERE ([database_id] = 2)
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB, EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS, MAX_DISPATCH_LATENCY=30 SECONDS, MAX_EVENT_SIZE=0 KB, MEMORY_PARTITION_MODE=NONE, TRACK_CAUSALITY=OFF, STARTUP_STATE=OFF);

alter event session [tempdb_growth] on server with STATE = START;
...
Рейтинг: 0 / 0
23.06.2021, 11:47
    #40079541
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
felix_ff,

если автор - администратор сервера, то правильным решением было бы начать процедуру по закупке дисков, вместо "охоты на ведьм".
...
Рейтинг: 0 / 0
23.06.2021, 12:07
    #40079549
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Владислав Колосов,

ну скажем так: иногда полезно знать - кто вредитель.
у меня были прецеденты когда горе-пользователи запускали нерегламентированный запрос с огромным выходным набором order by на конце.
было довольно неприятно наблюдать такую картину и в итоге пользователи получили по шапке и больше так не делали.
...
Рейтинг: 0 / 0
23.06.2021, 12:10
    #40079552
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
felix_ff,

это единичные случаи, они отлавливаются в ходе появления инцидента, на регулярной основе нет смысла делать контроль. Если рабочие процессы устоялись, то надо только следить за местом на дисках.
...
Рейтинг: 0 / 0
23.06.2021, 12:48
    #40079565
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Владислав Колосов,

мне бы хотелось это знать заранее, если вижу, что запрос потребляем много пространства, я бы получил письмо и сразу начал реагировать

не думаю, что хорошим решением будет получить инфу когда уже все весит, все жалуются и запрос "виновник" уже отработал (особенно если это будет в выходные)

Было бы здорово получить ответ на вопрос как, а не на вопрос зачем
...
Рейтинг: 0 / 0
23.06.2021, 13:06
    #40079569
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist
Владислав Колосов,

мне бы хотелось это знать заранее, если вижу, что запрос потребляем много пространства, я бы получил письмо и сразу начал реагировать

не думаю, что хорошим решением будет получить инфу когда уже все весит, все жалуются и запрос "виновник" уже отработал (особенно если это будет в выходные)

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


Дело не в том, заранее вы будете знать или постфактум, все дело в том, что вы с этим запросом планируете делать? Kill SPID?

Это может быть аналитический отчет, который аналитик строит для топов к важному собранию, и вам скажут, что его сейчас срубать нельзя. А система должна продолжать быстро работать, что тогда будете делать?

Вот тут и начнется самое интересное, именно к этому вам предлагают перейти сразу.
...
Рейтинг: 0 / 0
23.06.2021, 13:50
    #40079579
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
А в MSSQL есть что-то типа AWR отчета (как в оракле) ?
Т.е. пришел утром на работу, посмотрел типа AWR-отчета за последние сутки, сделал анализ трудных запросов.
...
Рейтинг: 0 / 0
23.06.2021, 14:11
    #40079584
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Владимир СА,

именно это и пытаюсь реализовать на скуле

по поводу того, что с ним делать. Есть запрос который периодически заполняет tempdb.. это это аналитический запрос который заполняется 1 раз и его убивать нельзя, ну тогда ок. Если нет - я постараюсь его оптимизировать и сделать так чтобы он не заполнял tempdb - очевидно ведь
...
Рейтинг: 0 / 0
23.06.2021, 14:34
    #40079591
georgy_2012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist,

Есть хорошие скрипты от парня по имени BrentOzar, там очень много полезный статей и скриптов по выявлению "тяжелых" запросов.
https://www.brentozar.com/blitzcache/

А вообще весь интернет забит скриптами
...
Рейтинг: 0 / 0
23.06.2021, 19:00
    #40079676
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выявление "тяжелый" запросов
Sandist,

авторсделать так чтобы он не заполнял tempdb

В целом, это невыполнимая задача, т.к. временные данные надо где-то хранить, например, а их объем, очевидно, зависит от выборки. 99.9% выборок правильные, то есть запросы пишут с пониманием того, что нужно выбрать, "всё по всему во всех базах" - это единичные случаи. Объем данных растет, растет и потребление tempdb.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выявление "тяжелый" запросов / 23 сообщений из 23, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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