Skip to content

Instantly share code, notes, and snippets.

@OsirisDBA
Created January 3, 2024 21:05
Show Gist options
  • Save OsirisDBA/3c0c5f4d9445a3af958b9772ff29e7a9 to your computer and use it in GitHub Desktop.
Save OsirisDBA/3c0c5f4d9445a3af958b9772ff29e7a9 to your computer and use it in GitHub Desktop.
Plan Summary for single query ( Resource Consumers, Memory Consumption, Total )
exec sp_executesql N'WITH
bucketizer as
(
SELECT
rs.plan_id as plan_id,
rs.execution_type as execution_type,
SUM(rs.count_executions) count_executions,
DATEADD(d, ((DATEDIFF(d, 0, rs.last_execution_time))),0 ) as bucket_start,
DATEADD(d, (1 + (DATEDIFF(d, 0, rs.last_execution_time))), 0) as bucket_end,
ROUND(CONVERT(float, SUM(rs.avg_query_max_used_memory*rs.count_executions))/NULLIF(SUM(rs.count_executions), 0)*8,2) as avg_query_max_used_memory,
ROUND(CONVERT(float, MAX(rs.max_query_max_used_memory))*8,2) as max_query_max_used_memory,
ROUND(CONVERT(float, MIN(rs.min_query_max_used_memory))*8,2) as min_query_max_used_memory,
ROUND(CONVERT(float, SQRT( SUM(rs.stdev_query_max_used_memory*rs.stdev_query_max_used_memory*rs.count_executions)/NULLIF(SUM(rs.count_executions), 0)))*8,2) as stdev_query_max_used_memory,
ISNULL(ROUND(CONVERT(float, (SQRT( SUM(rs.stdev_query_max_used_memory*rs.stdev_query_max_used_memory*rs.count_executions)/NULLIF(SUM(rs.count_executions), 0))*SUM(rs.count_executions)) / NULLIF(SUM(rs.avg_query_max_used_memory*rs.count_executions), 0)),2), 0) as variation_query_max_used_memory,
ROUND(CONVERT(float, SUM(rs.avg_query_max_used_memory*rs.count_executions))*8,2) as total_query_max_used_memory
FROM
sys.query_store_runtime_stats rs
JOIN sys.query_store_plan p ON p.plan_id = rs.plan_id
WHERE
p.query_id = @query_id
AND NOT (rs.first_execution_time > @interval_end_time OR rs.last_execution_time < @interval_start_time)
GROUP BY
rs.plan_id,
rs.execution_type,
DATEDIFF(d, 0, rs.last_execution_time)
),
is_forced as
(
SELECT is_forced_plan, plan_id
FROM sys.query_store_plan
)
SELECT b.plan_id as plan_id,
is_forced_plan,
execution_type,
count_executions,
SWITCHOFFSET(bucket_start, DATEPART(tz, @interval_start_time)) AS bucket_start,
SWITCHOFFSET(bucket_end, DATEPART(tz, @interval_start_time)) AS bucket_end,
avg_query_max_used_memory,
max_query_max_used_memory,
min_query_max_used_memory,
stdev_query_max_used_memory,
variation_query_max_used_memory,
total_query_max_used_memory
FROM bucketizer b
JOIN is_forced f ON f.plan_id = b.plan_id',N'@query_id bigint,@interval_start_time datetimeoffset(7),@interval_end_time datetimeoffset(7)',@query_id=3953,@interval_start_time='2023-12-27 15:03:22.2293087 -06:00',@interval_end_time='2024-01-03 15:03:22.2293087 -06:00'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment