Skip to content

Commit 0db8641

Browse files
Merge pull request #716 from erikdarlingdata/fix/hi-stage-intervals
sp_QuickieStore: stage interval IDs for @find_high_impact runtime stats
2 parents fc2f3a9 + 16176b4 commit 0db8641

1 file changed

Lines changed: 74 additions & 10 deletions

File tree

sp_QuickieStore/sp_QuickieStore.sql

Lines changed: 74 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4098,7 +4098,72 @@ BEGIN
40984098
volatile_metrics nvarchar(4000) NULL
40994099
);
41004100

4101-
/*Step 1a: Aggregate runtime stats to plan_id level (qsrs + qsrsi only)*/
4101+
/*Step 1a: Stage interval IDs for the time window*/
4102+
CREATE TABLE
4103+
#hi_intervals
4104+
(
4105+
runtime_stats_interval_id bigint NOT NULL
4106+
);
4107+
4108+
SELECT
4109+
@current_table = 'inserting #hi_intervals',
4110+
@sql = @isolation_level;
4111+
4112+
IF @troubleshoot_performance = 1
4113+
BEGIN
4114+
EXECUTE sys.sp_executesql
4115+
@troubleshoot_insert,
4116+
N'@current_table nvarchar(100)',
4117+
@current_table;
4118+
4119+
SET STATISTICS XML ON;
4120+
END;
4121+
4122+
SELECT
4123+
@sql += N'
4124+
SELECT
4125+
qsrsi.runtime_stats_interval_id
4126+
FROM ' + @database_name_quoted + N'.sys.query_store_runtime_stats_interval AS qsrsi
4127+
WHERE qsrsi.start_time >= @start_date
4128+
AND qsrsi.start_time < @end_date
4129+
OPTION(RECOMPILE);' + @nc10;
4130+
4131+
IF @debug = 1
4132+
BEGIN
4133+
PRINT LEN(@sql);
4134+
PRINT @sql;
4135+
END;
4136+
4137+
INSERT
4138+
#hi_intervals WITH (TABLOCK)
4139+
(
4140+
runtime_stats_interval_id
4141+
)
4142+
EXECUTE sys.sp_executesql
4143+
@sql,
4144+
N'@start_date datetimeoffset(7),
4145+
@end_date datetimeoffset(7)',
4146+
@start_date,
4147+
@end_date;
4148+
4149+
IF @troubleshoot_performance = 1
4150+
BEGIN
4151+
SET STATISTICS XML OFF;
4152+
4153+
EXECUTE sys.sp_executesql
4154+
@troubleshoot_update,
4155+
N'@current_table nvarchar(100)',
4156+
@current_table;
4157+
4158+
EXECUTE sys.sp_executesql
4159+
@troubleshoot_info,
4160+
N'@sql nvarchar(max),
4161+
@current_table nvarchar(100)',
4162+
@sql,
4163+
@current_table;
4164+
END;
4165+
4166+
/*Step 1b: Aggregate runtime stats to plan_id level using staged intervals*/
41024167
SELECT
41034168
@current_table = 'inserting #hi_plan_stats',
41044169
@sql = @isolation_level;
@@ -4152,10 +4217,13 @@ SELECT
41524217
max_dop =
41534218
MAX(qsrs.max_dop)
41544219
FROM ' + @database_name_quoted + N'.sys.query_store_runtime_stats AS qsrs
4155-
JOIN ' + @database_name_quoted + N'.sys.query_store_runtime_stats_interval AS qsrsi
4156-
ON qsrsi.runtime_stats_interval_id = qsrs.runtime_stats_interval_id
4157-
WHERE qsrsi.start_time >= @start_date
4158-
AND qsrsi.start_time < @end_date
4220+
WHERE EXISTS
4221+
(
4222+
SELECT
4223+
1/0
4224+
FROM #hi_intervals AS hi
4225+
WHERE hi.runtime_stats_interval_id = qsrs.runtime_stats_interval_id
4226+
)
41594227
GROUP BY
41604228
qsrs.plan_id
41614229
HAVING
@@ -4191,11 +4259,7 @@ OPTION(RECOMPILE);' + @nc10;
41914259
max_dop
41924260
)
41934261
EXECUTE sys.sp_executesql
4194-
@sql,
4195-
N'@start_date datetimeoffset(7),
4196-
@end_date datetimeoffset(7)',
4197-
@start_date,
4198-
@end_date;
4262+
@sql;
41994263

42004264
IF @troubleshoot_performance = 1
42014265
BEGIN

0 commit comments

Comments
 (0)