Skip to content

April 2026 Release#698

Merged
erikdarlingdata merged 17 commits intomainfrom
dev
Mar 23, 2026
Merged

April 2026 Release#698
erikdarlingdata merged 17 commits intomainfrom
dev

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

Summary

April 2026 release — all stored procedures bumped to x.4 / 20260401.

Changes

  • sp_QuickieStore: New @find_high_impact parameter with diagnostics (plan instability, workload concentration, physical reads clarification, local time display, bug fixes)
  • sp_HealthParser: MAXDOP 1 on all SELECT INTO queries
  • sp_IndexCleanup: Fix merge bug losing include columns in subset chains
  • sp_QuickieStore (community): sys.dm_db_tuning_recommendations in Expert Mode output (sp_QuickieStore: See if dm_db_tuning_recommendations would make a useful addition. #483)
  • Repo: YAML issue forms replacing markdown templates
  • All SPs: Version bump x.3 → x.4, date → 20260401

Version Matrix

SP Version
sp_HealthParser 3.4
sp_HumanEvents 7.4
sp_HumanEventsBlockViewer 5.4
sp_IndexCleanup 2.4
sp_LogHunter 3.4
sp_PerfCheck 2.4
sp_PressureDetector 6.4
sp_QueryReproBuilder 1.4
sp_QueryStoreCleanup 1.4
sp_QuickieStore 6.4

🤖 Generated with Claude Code

ReeceGoding and others added 17 commits March 2, 2026 21:31
…ions

sp_QuickieStore: added sys.dm_db_tuning_recommendations to Expert Mode output
…items

@find_high_impact = 1 identifies the vital few queries consuming
disproportionate resources. Scores queries across 6 dimensions (CPU,
duration, reads, writes, memory, executions) using PERCENT_RANK,
shows share-of-total per metric, and surfaces diagnostic signals
(parameter sensitivity, plan instability, spills, wait time).
Tested on SQL Server 2016-2025.

Also fixes two items from Reece's tuning recommendations PR (#691):
- SUBSTRING parsing: added IIF fallback when CHARINDEX returns 0
  so field reordering in future SQL Server versions won't throw
  Msg 536 (invalid length parameter)
- OUTER APPLY for plan_force_recommendation_status: pulled into its
  own @new = 1 AND @expert_mode = 1 block so it doesn't run as
  wasted work when expert mode is off

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…high_impact

Applied SWITCHOFFSET (or AT TIME ZONE when @Timezone is set) to the
start_date and end_date columns in the high impact output, matching
how the normal analysis displays execution times.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… output

Renamed reads_share to physical_reads_share, and updated high_signals
and volatile_metrics to say "physical reads" instead of just "reads"
to avoid confusion with logical reads. Also updated help text.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
#692)

When indexes form a chain of key subsets (A ⊂ B ⊂ C), Rule 3 assigned
each subset to its nearest superset (A → B, B → C). Rule 6 only
collected includes from direct subsets of the final superset, so
transitive subsets' include columns were silently dropped from the
merge script.

Added chain resolution between Rule 3 and Rule 4 that flattens
A → B → C into A → C, so all include columns propagate correctly.

Also fixed superseded_by text to aggregate all subset names via
FOR XML PATH when multiple subsets target the same superset, instead
of non-deterministically picking one.

Tested on SQL Server 2016, 2017, 2019, 2022.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add parallel efficiency metric using (cpu/elapsed - 1) / (dop - 1)
formula to score how effectively queries use parallelism. Also add
four new diagnostic rules:

- intermittent waits: duration volatile but CPU stable (external waits)
- rare but expensive: low execution count but high resource share
- adhoc bloat: many query_id variants per query_hash
- scan heavy: high physical reads per execution

Tested clean on sql2016-sql2025 across PerformanceMonitor,
StackOverflow2013, StackOverflow2010, and hammerdb_tpch databases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…act (#693)

New result set fires before the query details showing what percentage of
total resources the surfaced queries account for. Classifies workloads as
Concentrated (>= 50%), Moderate (25-49%), or Flat (< 25%) with actionable
recommendations for each profile. Helps users identify "death by a thousand
cuts" workloads where no single query dominates. Tested on sql2016, sql2017,
sql2022, sql2025.

Also adds documentation to the @help output explaining the new columns.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
SELECT INTO with OPTION(RECOMPILE) produces parallel insert plans that
cause massive LATCH_EX waits on tempdb allocation pages — even when zero
rows are produced (common with @warnings_only = 1).

Actual execution plans showed 253 seconds of cumulative LATCH_EX across
6 queries, with trivial CPU time (41-183ms). Each query spawned 8
parallel threads spending 7+ seconds each in latch coordination over
empty result sets.

Adding MAXDOP 1 eliminates the parallel insert while preserving
RECOMPILE for plan optimization. Tested on SQL Server 2022:

  Before: 50-54 seconds (avg 52,332ms)
  After:   4-5 seconds (avg 4,684ms)

~10x improvement. Results consistent at idle and under TPC-H load.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…dop1-select-into

sp_HealthParser: add MAXDOP 1 to SELECT INTO queries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ind_high_impact

INSERT...EXEC captures all result sets, not just the first. The batch
had three SELECTs (queries, plans, objects) so plan_ids and object_ids
were concatenated into #hi_id_staging_queries. Removed the extra two
SELECTs since they are already executed separately below.

Tested on SQL2022 against PerformanceMonitor and hammerdb_tpcc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…pact

Previously any query with >1 plan was flagged, which produced false
positives on stable workloads with many executions. Now requires
fewer than 5 executions per plan (frequent recompilation) and excludes
queries with RECOMPILE hints where multiple plans are expected.

Tested on SQL2022 against PerformanceMonitor and hammerdb_tpcc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Converts bug report, feature request, and question templates from
freeform markdown to structured YAML forms with enforced required
fields. Adds config.yml to disable blank issues and link to Discussions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace markdown issue templates with YAML issue forms
Version bumps (x.3 → x.4, date → 20260401):
- sp_HealthParser 3.4
- sp_HumanEvents 7.4
- sp_HumanEventsBlockViewer 5.4
- sp_IndexCleanup 2.4
- sp_LogHunter 3.4
- sp_PerfCheck 2.4
- sp_PressureDetector 6.4
- sp_QueryReproBuilder 1.4
- sp_QueryStoreCleanup 1.4
- sp_QuickieStore 6.4

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ease

Bump all SP versions for April 2026 release
@erikdarlingdata erikdarlingdata merged commit 7c6f56f into main Mar 23, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants