Performance Studio: A Cross-Platform SQL Server Execution Plan Analyzer

A woman developer analyzes a holographic SQL Server execution plan tree with warning nodes highlighted in red

You have a slow query. You pull the execution plan in SSMS. You stare at the arrows. Some are thick, some are thin. There’s a yellow triangle somewhere. You’re pretty sure the problem is “in there,” but translating a ShowPlan XML tree into actionable tuning advice requires experience that takes years to build.

Performance Studio is a free, open-source execution plan analyzer built by Erik Darling of Darling Data. It parses your .sqlplan files, runs 30 analysis rules against the plan tree, and tells you what’s actually wrong – with severity ratings, benefit estimates, and actionable advice. MIT-licensed. No telemetry. Runs on Windows, macOS, and Linux.

I’ve known Erik for years, and his video training is top-notch – well crafted, practical, and genuinely helpful for any working SQL Server DBA. But this review is based on the code, not the friendship. I went through the repository and here’s what I found.

Four Ways to Use It

Performance Studio isn’t just a desktop app. It ships in four forms:

  • Desktop GUI (Avalonia 11, cross-platform) – drag and drop .sqlplan files, connect to live servers, browse Query Store, compare plans side by side
  • CLI (planview analyze) – batch-process plan files from the command line with JSON or text output, suitable for CI/CD pipelines
  • SSMS Extension (Windows only) – right-click “Open in Performance Studio” from any plan in SSMS 18-22
  • MCP Server (built into the GUI) – 13 tools for Claude Code, GitHub Copilot, Cursor, or any other MCP-compatible tool

The cross-platform support is significant. SSMS is Windows-only. If you’re a DBA who works on a Mac (it happens) or your development environment is Linux, this gives you native execution plan analysis without a Windows VM.

The 30-Rule Analysis Engine

The heart of Performance Studio is its PlanAnalyzer, which runs 30 rules against the parsed execution plan tree. Each rule produces warnings at Info, Warning, or Critical severity. Here’s a sampling of what it catches:

These aren’t surface-level pattern matches. The code has real analytical depth:

  • Rule 5 (Row Estimate Mismatch) normalizes per-execution actuals, skips key lookups where per-execution estimates are misleading, and calls AssessEstimateHarm() to only fire when the bad estimate causes observable harm.
  • Rule 8 (Parallel Skew) adjusts its threshold based on DOP (60% at DOP 2 vs. 50% at higher DOP), filters the coordinator thread, and explicitly handles batch mode sort behavior where all output lands on one thread by design.
  • Rule 12 (Non-SARGable Predicate) uses multi-part bracket notation detection to distinguish function calls on the column side vs. the parameter side of predicates. It also handles bitmap filter PROBE() expressions that look like residual predicates but aren’t.
  • Rule 3 (Serial Plan) distinguishes 29 specific NonParallelPlanReason values and maps them to actionable vs. informational severity. It even checks whether a MaxDOP 1 hint is in the query text vs. a server-level setting.

A second-pass BenefitScorer assigns each warning a MaxBenefitPercent – the theoretical maximum percentage of elapsed time you could save by addressing that specific finding. This helps you prioritize: a Critical warning on a 2ms operation is less urgent than a Warning on an operation consuming 80% of your query’s runtime.

Query Store Integration

Performance Studio can connect to a live SQL Server, browse Query Store, and fetch historical execution plans for analysis. You can filter by query_id, plan_id, query hash, plan hash, or module name (with wildcards). Plans fetched from Query Store are automatically parsed and loaded into the analyzer for immediate investigation.

This closes a common workflow gap. Previously, getting a Query Store plan into a tool for analysis meant exporting XML, saving to a file, and opening it. Here you just browse, click, and analyze.

Plan Sharing

The repository includes a PlanShare server – an ASP.NET Core API backed by SQLite that lets you share execution plans with colleagues via URL. Plans have configurable TTL (1-365 days), rate limiting, and privacy-preserving analytics (SHA256 visitor hashing, referrer domain-only stripping). No PII stored.

MCP Server for AI Analysis

Like its companion tool Performance Monitor, Performance Studio embeds an MCP server (localhost only, disabled by default). The 13 tools give an LLM structured access to loaded plans:

  • analyze_plan – full JSON analysis with statements, warnings, and operator tree
  • get_plan_warnings – filtered by severity
  • get_missing_indexes – with impact scores and ready-to-run CREATE INDEX statements
  • get_expensive_operators – top N by elapsed time or cost percentage
  • compare_plans – side-by-side cost, runtime, I/O, and wait diff
  • get_repro_script – paste-ready sp_executesql reproduction script
  • get_query_store_top – fetch and auto-analyze top queries from Query Store

Being able to say “analyze this plan and explain the top three problems” to Claude Code or GitHub Copilot, with Performance Studio providing structured data rather than raw XML, is a genuinely useful workflow.

The Code Is Clean

The C# codebase targets .NET 10 with modern idioms throughout: file-scoped namespaces, nullable enabled, pattern matching, switch expressions, record types. The ShowPlanParser and PlanAnalyzer are split into focused partial class files (5 and 6 respectively), keeping each file manageable.

The CONTRIBUTING.md says “No unnecessary abstractions – keep it simple and direct,” and the code delivers: the GUI uses code-behind rather than MVVM or ReactiveUI, making it accessible to SQL people who might want to contribute. Compiled regex patterns at the class level for predicate analysis. The Blazor web viewer cleverly source-links Core files directly into the WASM bundle to avoid incompatible dependencies.

What You Should Know

  • macOS Windows Authentication doesn’t work – no Kerberos in typical macOS setups. SQL auth and Entra ID work fine.
  • Linux credential store isn’t implemented yet – file analysis and SQL auth work, but no OS keychain integration.
  • macOS binaries are unsigned – you’ll need xattr -cr PerformanceStudio.app to bypass Gatekeeper.
  • The SSMS extension is distributed separately from the main release artifacts, from a specific release tag.
  • 19 of the 30 warning types haven’t been migrated to the BenefitScorer framework yet (tracked as LegacyWarningTypes in the code). They still fire correctly; they just don’t have benefit-percent estimates.

The License Is Exactly What It Says

MIT. Full source on GitHub. Every feature – plan analyzer, GUI, CLI, SSMS extension, MCP server, Query Store integration, PlanShare – is free. No premium tier, no feature gating, no open-core reservations.

The Companion Tool

Performance Studio tells you why a query’s execution plan is slow. Erik’s other tool, Performance Monitor, tells you which queries are hurting your server in the first place. I’ve written a separate review of Performance Monitor that covers its 32 collectors, alerting system, and Lite edition for agentless monitoring. The two tools share the same 30-rule plan analyzer engine and complement each other: Monitor identifies the problem queries over time, Studio explains what’s wrong with their plans.

Should You Use It?

If you tune SQL Server queries – and if you’re reading this blog, you probably do – this is worth trying. The analysis rules encode real performance tuning expertise. The benefit scoring helps you prioritize. The cross-platform support means you’re not locked to a Windows desktop. And the MCP integration means your AI assistant can actually read execution plans instead of hallucinating about them.

The release cadence is rapid (multiple releases per week, with nightly builds from the dev branch), the author is a recognized SQL Server performance expert, and external contributions are being accepted and acknowledged.

GitHub: erikdarlingdata/PerformanceStudio | erikdarling.com

Have questions about execution plan analysis? Let me know on Bluesky or LinkedIn.