Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 dm_exec_query_stats  [new]
Meriguan
Member

Откуда:
Сообщений: 124
Добрый день!

Надо собрать статстику по выполнению хранимых процедур, а именно время выполнения процедур при последнем запуске. Необходимо для анализа на сколько изменяется время выполения процедур со временем.
Использую dm_exec_query_stats и dm_exec_sql_text, но не могу понять почему в dm_exec_query_stats есть дублирующиеся строки, соответственно не понятно какую строку брать за основу, тем более что last_execution_time одинаковое.
Когда выполняю процедуру по всех строках этой процедуры изменяется last_execution_time и execution_count увеличуется во всех строках соотвественно на +1. К тому же планы запросов в dm_exec_query_plan по этой процедуре по обеим строкам одинаковые.

Так почему дубли и какие строки страть за основу?
27 июн 12, 11:08    [12780917]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Разные планы выполнения. Ориентируйтесь по last_execution_time.
27 июн 12, 11:15    [12780969]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Хотя нет, не всегда. Извините, ошибся.
27 июн 12, 11:17    [12780985]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Meriguan
Member

Откуда:
Сообщений: 124
Jovanny
Разные планы выполнения. Ориентируйтесь по last_execution_time.


По идее разные строки означают разные планы выполения, но я проверил в dm_exec_query_plan планы идентичны.
27 июн 12, 11:21    [12781022]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
SomewhereSomehow
Member

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

sys.dm_exec_query_stats (Transact-SQL)
Возвращает суммарную статистику производительности для кэшированных планов запросов в SQL Server 2012. Представление одной строки для каждой инструкции плана в кэше и время жизни строк связано с самим планом. Когда план удаляется из кэша, соответствующие строки исключаются из представления.
27 июн 12, 11:34    [12781151]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Crimean
Member

Откуда:
Сообщений: 13147
собрать статистику - может все же sql trace? с нужными фильтрами?
27 июн 12, 11:34    [12781154]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
А таки планы разные.
27 июн 12, 11:37    [12781180]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Meriguan
Member

Откуда:
Сообщений: 124
SomewhereSomehow
Meriguan,

sys.dm_exec_query_stats (Transact-SQL)
Возвращает суммарную статистику производительности для кэшированных планов запросов в SQL Server 2012. Представление одной строки для каждой инструкции плана в кэше и время жизни строк связано с самим планом. Когда план удаляется из кэша, соответствующие строки исключаются из представления.


Тогда почему в кэше два идентичных плана?
Когда выполняю процедуру, то execution_count добавляется +1 по всех строкам, хотя по выше сказаному посту должен использоватся какой либо один план.
27 июн 12, 11:38    [12781200]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Meriguan
Member

Откуда:
Сообщений: 124
Crimean
собрать статистику - может все же sql trace? с нужными фильтрами?


Во первых нет доступа, во вторых процес надо автоматизировать, что бы каждый раз не тратить время на сбор информации, а использовать готовые данные, которые собраны и сохранены.
27 июн 12, 11:40    [12781227]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Meriguan
Member

Откуда:
Сообщений: 124
Jovanny
А таки планы разные.


По идее да, но по факту нет :(. Вот только что нашел процедуру с 16-ти планами, проверил первые 4-ри идентичны...
27 июн 12, 11:44    [12781277]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Meriguan
Crimean
собрать статистику - может все же sql trace? с нужными фильтрами?


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


а кто сказал, что это нельзя автоматизировать? да и прав надо минимум - alter trace. и вообще это можно повесить или как стартап процу или как стартап задание планировщика.. сбор данных прекрасно скриптуется, если чо
27 июн 12, 11:46    [12781308]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
SomewhereSomehow
Member

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

это не два плана, это одна строка для каждой инструкции, хотите получить отдельные планы, примерно так:
use tempdb;
create table t1(a int);
create table t2(a int);
go
create proc test1
as
select * from t1;
select * from t2;
go
dbcc freeproccache;
go
exec test1;
go
select 
	query_plan = convert(xml,tp.query_plan)
from 
	sys.dm_exec_query_stats qs
	cross apply sys.dm_exec_text_query_plan(qs.plan_handle, qs.statement_start_offset, qs.statement_end_offset) tp
;
go
drop proc test1;
drop table t1,t2;
27 июн 12, 11:47    [12781316]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Meriguan
Member

Откуда:
Сообщений: 124
SomewhereSomehow
Meriguan,

это не два плана, это одна строка для каждой инструкции, хотите получить отдельные планы, примерно так:
use tempdb;
create table t1(a int);
create table t2(a int);
go
create proc test1
as
select * from t1;
select * from t2;
go
dbcc freeproccache;
go
exec test1;
go
select 
	query_plan = convert(xml,tp.query_plan)
from 
	sys.dm_exec_query_stats qs
	cross apply sys.dm_exec_text_query_plan(qs.plan_handle, qs.statement_start_offset, qs.statement_end_offset) tp
;
go
drop proc test1;
drop table t1,t2;


Но иструкция то одинаковыя.
27 июн 12, 12:04    [12781522]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Meriguan
Member

Откуда:
Сообщений: 124
Crimean
Meriguan
пропущено...


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


а кто сказал, что это нельзя автоматизировать? да и прав надо минимум - alter trace. и вообще это можно повесить или как стартап процу или как стартап задание планировщика.. сбор данных прекрасно скриптуется, если чо


Учитывая очень ограниченый мой доступ, надо права на базу, на установку профайлера и на сервер не пускают и т.д.
27 июн 12, 12:07    [12781565]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Meriguan
Учитывая очень ограниченый мой доступ, надо права на базу, на установку профайлера и на сервер не пускают и т.д.


вас кто-то сильно ввел в заблуждение. ничего военного там нет. но раз хотите "через задний проход" - кто ш вам помешает - барабан и флаг всегда свободны, особенно при попутном ветре
27 июн 12, 12:13    [12781632]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Meriguan
Но иструкция то одинаковыя.

В процедуре есть две разные инструкции, выборка из таблицы1 и таблицы2.
27 июн 12, 12:24    [12781727]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Meriguan
Member

Откуда:
Сообщений: 124
SomewhereSomehow
Meriguan
Но иструкция то одинаковыя.

В процедуре есть две разные инструкции, выборка из таблицы1 и таблицы2.


Да, разобрался.
27 июн 12, 12:48    [12782052]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
Meriguan
Member

Откуда:
Сообщений: 124
Crimean
собрать статистику - может все же sql trace? с нужными фильтрами?


Я так понял использовать процедуру sp_trace_create с разными фильтрами, а данные по результату трасировки можно хранить в таблице, а не файле?
27 июн 12, 12:50    [12782068]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: dm_exec_query_stats  [new]
еще вопрос
Guest
dm_exec_query_stats выдает помимо прочего поле
total_logical_writes -
Общее количество операций логической записи при выполнении плана с момента его компиляции.
А как можно вычислить не количество операций, а их объем в байтах?
14 ноя 16, 10:21    [19889758]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
еще вопрос,

автор
Returns information about all queries that have requested and are waiting for a memory grant or have been given a memory grant.
dm_exec_query_memory_grants

requested_memory_kb / granted_memory_kb
14 ноя 16, 11:08    [19889955]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
еще вопрос
Guest
TaPaK,

это вроде не то, мне необходимо определить какой объем пишется на диск.
если не ошибаюсь, то в dm_exec_query_stats
в поле total_logical_writes содержится количество страниц по 8 КБ записываемых на диск
14 ноя 16, 12:01    [19890289]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
еще вопрос
TaPaK,

это вроде не то, мне необходимо определить какой объем пишется на диск.
если не ошибаюсь, то в dm_exec_query_stats
в поле total_logical_writes содержится количество страниц по 8 КБ записываемых на диск

ну что за глупости, это может максимум совпасть на очень простом запросе и то не факт... может начать с того зачем вам это?
14 ноя 16, 12:03    [19890297]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
еще вопрос
Guest
TaPaK,

Резко стали большими бэкапы логов транзакций, поэтому хотелось бы найти запросы (и/или процедуры) которые больше всего меняют данные в таблицах, либо сами таблицы, которые больше всего подвергаются изменениям.
14 ноя 16, 12:14    [19890371]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
еще вопрос,

индексы поди перестраиваете
14 ноя 16, 12:21    [19890414]     Ответить | Цитировать Сообщить модератору
 Re: dm_exec_query_stats  [new]
o-o
Guest
еще вопрос
Резко стали большими бэкапы логов транзакций, поэтому хотелось бы найти запросы (и/или процедуры) которые больше всего меняют данные в таблицах, либо сами таблицы, которые больше всего подвергаются изменениям.

а какое отношение имеет total_logical_writes для плана к логированию?
это же не объем записанного в лог!!!
если я один и тот же SELECT INTO выполню в базе с полной моделью и с простой,
получу одно и то же для плана в total_logical_writes, планы вообще идентичные будут.
но при этом в простой модели будет минимальное логирование, а в полной полное,
и в лог совершенно разный объем уйдет
14 ноя 16, 12:34    [19890508]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить