{"id":54352,"date":"2025-12-04T07:58:46","date_gmt":"2025-12-04T07:58:46","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=54352"},"modified":"2025-12-04T07:59:35","modified_gmt":"2025-12-04T07:59:35","slug":"best-mssql-database-performance-tools","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/best-mssql-database-performance-tools\/","title":{"rendered":"Best MSSQL database performance Tools"},"content":{"rendered":"\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Category<\/th><th>Tool Name<\/th><th>Type<\/th><th>Purpose \/ What It Does<\/th><th>Best For<\/th><th>Cost<\/th><\/tr><\/thead><tbody><tr><td><strong>Built-in SQL Server Tools<\/strong><\/td><td><strong>Query Store<\/strong><\/td><td>Native feature<\/td><td>Captures query history, execution plans, regressions; identifies top slow queries.<\/td><td>Performance tuning, plan forcing<\/td><td>Free<\/td><\/tr><tr><td><\/td><td><strong>Execution Plans (Actual\/Estimated)<\/strong><\/td><td>Native feature<\/td><td>Visualizes how SQL runs (scans, seeks, joins, memory spills).<\/td><td>Query tuning &amp; indexing<\/td><td>Free<\/td><\/tr><tr><td><\/td><td><strong>Dynamic Management Views (DMVs)<\/strong><\/td><td>Native feature<\/td><td>Internal performance stats (CPU, IO, spills, missing indexes, plan cache).<\/td><td>Expert-level diagnostics<\/td><td>Free<\/td><\/tr><tr><td><\/td><td><strong>SQL Profiler<\/strong><\/td><td>Native tool<\/td><td>Real-time capture of SQL calls, duration, CPU, parameters.<\/td><td>Debugging .NET queries, N+1 detection<\/td><td>Free<\/td><\/tr><tr><td><\/td><td><strong>Extended Events<\/strong><\/td><td>Native feature<\/td><td>Lightweight, production-safe tracing (modern profiler).<\/td><td>Production monitoring<\/td><td>Free<\/td><\/tr><tr><td><\/td><td><strong>Database Engine Tuning Advisor (DTA)<\/strong><\/td><td>Native tool<\/td><td>Suggests indexes, indexed views based on workloads.<\/td><td>Index recommendations<\/td><td>Free<\/td><\/tr><tr><td><\/td><td><strong>Performance Monitor (PerfMon)<\/strong><\/td><td>OS-level tool<\/td><td>System counters: CPU, memory, IO, SQL locks, buffer pool metrics.<\/td><td>Server-level performance<\/td><td>Free<\/td><\/tr><tr><td><strong>SSMS \/ ADS Extensions<\/strong><\/td><td>Azure Data Studio + Extensions<\/td><td>Editor + plugins<\/td><td>Query tuning helpers, execution plan viewer, built-in Copilot.<\/td><td>Cross-platform SQL development<\/td><td>Free<\/td><\/tr><tr><td><\/td><td>Redgate SQL Prompt<\/td><td>Commercial extension<\/td><td>Query formatting, suggestions, best-practice hints.<\/td><td>Developer productivity<\/td><td>Paid<\/td><\/tr><tr><td><\/td><td>Redgate SQL Search<\/td><td>Free tool<\/td><td>Searches objects quickly across DB.<\/td><td>Schema navigation<\/td><td>Free<\/td><\/tr><tr><td><\/td><td>Redgate SQL Compare<\/td><td>Commercial<\/td><td>Schema diff &amp; deployment.<\/td><td>DB DevOps<\/td><td>Paid<\/td><\/tr><tr><td><\/td><td>dbForge Studio for SQL Server<\/td><td>Commercial toolkit<\/td><td>Query profiler, analysis, tuning, database explorer.<\/td><td>GUI-based SQL tuning<\/td><td>Paid<\/td><\/tr><tr><td><\/td><td>ApexSQL Tools<\/td><td>Commercial<\/td><td>Index analysis, plan analysis, performance monitoring.<\/td><td>Advanced tuning<\/td><td>Paid<\/td><\/tr><tr><td><strong>APM (Application Performance Monitoring)<\/strong><\/td><td>Azure Application Insights<\/td><td>Cloud APM<\/td><td>Tracks slow ASP.NET requests, DB dependency timings, failures.<\/td><td>Azure-hosted .NET apps<\/td><td>Free \/ Paid<\/td><\/tr><tr><td><\/td><td>New Relic APM<\/td><td>APM<\/td><td>End-to-end tracing, slow SQL insights.<\/td><td>Cloud &amp; enterprise apps<\/td><td>Paid<\/td><\/tr><tr><td><\/td><td>Dynatrace<\/td><td>APM<\/td><td>Full-stack monitoring, auto-detection of slow DB queries.<\/td><td>Large distributed systems<\/td><td>Paid<\/td><\/tr><tr><td><\/td><td>Datadog APM<\/td><td>APM<\/td><td>SQL performance metrics + .NET tracing.<\/td><td>Modern microservices<\/td><td>Paid<\/td><\/tr><tr><td><\/td><td>AppDynamics<\/td><td>APM<\/td><td>Business transaction tracing, slow SQL analysis.<\/td><td>Large enterprises<\/td><td>Paid<\/td><\/tr><tr><td><strong>Load Testing \/ Perf Testing<\/strong><\/td><td>k6<\/td><td>Load testing tool<\/td><td>Stress-testing endpoints hitting MSSQL.<\/td><td>API\/database load simulation<\/td><td>Free \/ OSS<\/td><\/tr><tr><td><\/td><td>JMeter<\/td><td>Load testing tool<\/td><td>Heavy-load scenarios, distributed tests.<\/td><td>Enterprise load testing<\/td><td>Free<\/td><\/tr><tr><td><\/td><td>Locust<\/td><td>Python-based load tool<\/td><td>Easy scriptable load testing.<\/td><td>Developer-friendly testing<\/td><td>Free<\/td><\/tr><tr><td><\/td><td>wrk \/ Vegeta<\/td><td>HTTP load generators<\/td><td>Very fast, low-overhead tests.<\/td><td>High-volume test scenarios<\/td><td>Free<\/td><\/tr><tr><td><strong>.NET \/ Programming Tools<\/strong><\/td><td>BenchmarkDotNet<\/td><td>Benchmarking library<\/td><td>Micro-benchmarks for EF Core, Dapper, LINQ, etc.<\/td><td>Code-level performance tests<\/td><td>Free<\/td><\/tr><tr><td><\/td><td>EF Core Logging \/ Diagnostics<\/td><td>Built-in feature<\/td><td>Logs SQL, reveals N+1 queries, timings.<\/td><td>EF Core performance debugging<\/td><td>Free<\/td><\/tr><tr><td><\/td><td>ASP.NET Middleware Logging<\/td><td>Application-level<\/td><td>Track request time, SQL query count per request.<\/td><td>API performance<\/td><td>Free<\/td><\/tr><tr><td><strong>AI-Assisted Tools<\/strong><\/td><td>GitHub Copilot<\/td><td>IDE assistant<\/td><td>Rewrite SQL, suggest indexes, optimize LINQ.<\/td><td>Developer productivity<\/td><td>Paid<\/td><\/tr><tr><td><\/td><td>Azure Data Studio Copilot<\/td><td>AI SQL helper<\/td><td>Explains plans, optimizes queries, proposes indexing.<\/td><td>SQL developers<\/td><td>Free (preview)<\/td><\/tr><tr><td><\/td><td>ChatGPT \/ Claude \/ Gemini<\/td><td>AI models<\/td><td>Analyze execution plans, rewrite queries, explain tuning.<\/td><td>Performance c<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. Built-in SQL Server Tools (You Already Own These)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.1 Query Store \u2705 (must-use)<\/h3>\n\n\n\n<p><strong>What it does<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Captures history of queries, execution plans, runtime stats (CPU, duration, reads, etc.).<\/li>\n\n\n\n<li>Shows <strong>top resource-consuming queries<\/strong> and <strong>plan regressions<\/strong>.<\/li>\n\n\n\n<li>Lets you <strong>force a good plan<\/strong> if a bad one appears.<\/li>\n<\/ul>\n\n\n\n<p><strong>Why it\u2019s great for you<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Perfect for your \u201cbefore vs after\u201d experiments.<\/li>\n\n\n\n<li>Central to any serious performance engineering workflow.<\/li>\n<\/ul>\n\n\n\n<p><strong>How to enable (quick refresher)<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">ALTER DATABASE YourDbName\nSET QUERY_STORE = ON;\n<\/code><\/span><\/pre>\n\n\n<p>Then, in SSMS:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Database \u2192 Query Store \u2192 <em>Top Resource Consuming Queries<\/em>, <em>Regressed Queries<\/em>, etc.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">1.2 Execution Plans (Actual Execution Plan)<\/h3>\n\n\n\n<p><strong>What it does<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Shows <strong>how<\/strong> SQL Server runs your query (scans, seeks, key lookups, joins, spills, etc.).<\/li>\n\n\n\n<li>Helps you see <strong>missing indexes<\/strong>, bad joins, parameter sniffing issues.<\/li>\n<\/ul>\n\n\n\n<p><strong>How to use<\/strong><\/p>\n\n\n\n<p>In SSMS:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Click <strong>Include Actual Execution Plan<\/strong> (Ctrl+M) and run the query.<\/li>\n\n\n\n<li>Look for:\n<ul class=\"wp-block-list\">\n<li>Index Scan \/ Table Scan<\/li>\n\n\n\n<li>Key Lookup<\/li>\n\n\n\n<li>Hash Match + tempdb spills<\/li>\n\n\n\n<li>Big estimated vs actual row differences<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">1.3 Dynamic Management Views (DMVs)<\/h3>\n\n\n\n<p><strong>What they do<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Internal system views that expose:\n<ul class=\"wp-block-list\">\n<li>Top CPU \/ IO queries<\/li>\n\n\n\n<li>Missing indexes<\/li>\n\n\n\n<li>Index usage<\/li>\n\n\n\n<li>Plan cache<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><strong>Examples<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>sys.dm_exec_query_stats<\/code><\/li>\n\n\n\n<li><code>sys.dm_exec_sql_text<\/code><\/li>\n\n\n\n<li><code>sys.dm_exec_query_plan<\/code><\/li>\n\n\n\n<li><code>sys.dm_db_missing_index_details<\/code><\/li>\n\n\n\n<li><code>sys.dm_db_index_usage_stats<\/code><\/li>\n<\/ul>\n\n\n\n<p>(We already built a mini script library for you in Appendix B of the \u201cbook\u201d above \u2013 that\u2019s basically your <strong>DMV toolkit<\/strong>.)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">1.4 SQL Server Profiler \/ Extended Events<\/h3>\n\n\n\n<p><strong>SQL Server Profiler<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Real-time stream of:\n<ul class=\"wp-block-list\">\n<li>Queries<\/li>\n\n\n\n<li>Duration<\/li>\n\n\n\n<li>CPU<\/li>\n\n\n\n<li>Reads<\/li>\n\n\n\n<li>Parameters<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Very handy when you want to <strong>see exactly what your .NET app is doing<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p><strong>Extended Events<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The modern replacement for Profiler.<\/li>\n\n\n\n<li>More lightweight and production-friendly.<\/li>\n<\/ul>\n\n\n\n<p>Use cases:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Catch long-running queries from ASP.NET.<\/li>\n\n\n\n<li>Validate N+1 issues.<\/li>\n\n\n\n<li>See which endpoints hammer the DB.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">1.5 Database Engine Tuning Advisor (DTA)<\/h3>\n\n\n\n<p><strong>What it does<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Takes a <strong>workload<\/strong> (trace \/ query file) and recommends:\n<ul class=\"wp-block-list\">\n<li>Indexes<\/li>\n\n\n\n<li>Indexed views<\/li>\n\n\n\n<li>Partitions<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>It\u2019s good as a <strong>second opinion<\/strong>. Don\u2019t blindly apply everything, but it often gives useful index hints.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">1.6 Performance Monitor (PerfMon) + SQL Server Counters<\/h3>\n\n\n\n<p>Windows + SQL Server performance counters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>SQLServer:Buffer Manager<\/code> (Page life expectancy, etc.)<\/li>\n\n\n\n<li><code>SQLServer:SQL Statistics<\/code> (Batch Requests\/sec)<\/li>\n\n\n\n<li><code>SQLServer:Locks<\/code> (deadlocks, lock waits)<\/li>\n\n\n\n<li><code>Processor<\/code>, <code>Memory<\/code>, <code>PhysicalDisk<\/code><\/li>\n<\/ul>\n\n\n\n<p>Use them to see if the bottleneck is:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CPU<\/li>\n\n\n\n<li>IO<\/li>\n\n\n\n<li>Memory<\/li>\n\n\n\n<li>Locks<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. SSMS\/Azure Data Studio Extensions &amp; Helpers<\/h2>\n\n\n\n<p>These are tools that live inside or alongside SSMS \/ Azure Data Studio and make tuning easier.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.1 Azure Data Studio + Extensions<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Built-in <strong>notebooks<\/strong>, integration with <strong>Query Store<\/strong>, and optional <strong>Copilot\/AI<\/strong> features (depending on setup).<\/li>\n\n\n\n<li>Nice for:\n<ul class=\"wp-block-list\">\n<li>Query analysis<\/li>\n\n\n\n<li>Lightweight SQL development<\/li>\n\n\n\n<li>Cross-platform work<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">2.2 Redgate Tooling (commercial but widely used)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SQL Monitor<\/strong> \u2013 monitors SQL Server performance, alerts on long-running queries, blocking, etc.<\/li>\n\n\n\n<li><strong>SQL Prompt<\/strong> \u2013 helps rewrite queries, detect bad patterns, format SQL neatly.<\/li>\n\n\n\n<li><strong>SQL Profiler-like functionality &amp; monitoring dashboards<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>These are extremely popular in SQL Server shops for ongoing performance monitoring and tuning.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">2.3 dbForge \/ ApexSQL \/ Devart toolsets<\/h3>\n\n\n\n<p>Vendors like Devart (dbForge) and ApexSQL provide:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Query profilers \/ analyzers<\/li>\n\n\n\n<li>Index analyzers<\/li>\n\n\n\n<li>Execution plan visualizers<\/li>\n\n\n\n<li>Monitoring dashboards<\/li>\n<\/ul>\n\n\n\n<p>These are GUI-heavy tools that make analysis simpler when you don\u2019t want to live in raw DMVs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Application Performance Monitoring (APM) for .NET + MSSQL<\/h2>\n\n\n\n<p>These tools see <strong>end-to-end<\/strong>: HTTP request \u2192 .NET code \u2192 SQL query.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.1 Azure Application Insights<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Deep integration with ASP.NET \/ .NET.<\/li>\n\n\n\n<li>Shows:\n<ul class=\"wp-block-list\">\n<li>Slow requests<\/li>\n\n\n\n<li>SQL dependencies (with timings)<\/li>\n\n\n\n<li>Call stacks<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Very good if you\u2019re already on Azure \/ App Service \/ AKS.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">3.2 Other APMs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>New Relic<\/strong><\/li>\n\n\n\n<li><strong>Dynatrace<\/strong><\/li>\n\n\n\n<li><strong>Datadog<\/strong><\/li>\n\n\n\n<li><strong>AppDynamics<\/strong><\/li>\n<\/ul>\n\n\n\n<p>They provide:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Transaction traces<\/li>\n\n\n\n<li>SQL call breakdowns (per endpoint)<\/li>\n\n\n\n<li>N+1 detection clues<\/li>\n\n\n\n<li>Throughput &amp; latency dashboards<\/li>\n<\/ul>\n\n\n\n<p>These are great when you want to say \u201cthis specific API route is slow because of this specific SQL\u201d.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Performance &amp; Benchmarking Tools for .NET + MSSQL<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">4.1 BenchmarkDotNet<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For micro-benchmarks on .NET code paths.<\/li>\n\n\n\n<li>You can:\n<ul class=\"wp-block-list\">\n<li>Benchmark different EF Core queries.<\/li>\n\n\n\n<li>Compare Dapper vs EF Core vs raw ADO.NET.<\/li>\n\n\n\n<li>See allocations &amp; timing.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Perfect for lab-style experiments like we designed earlier.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">4.2 Load Testing Tools<\/h3>\n\n\n\n<p>To stress-test your ASP.NET + MSSQL combo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>k6<\/strong><\/li>\n\n\n\n<li><strong>JMeter<\/strong><\/li>\n\n\n\n<li><strong>Locust<\/strong><\/li>\n\n\n\n<li><strong>Vegeta \/ wrk (HTTP-level)<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Use them to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Hit endpoints<\/li>\n\n\n\n<li>Watch SQL load via Query Store + DMVs<\/li>\n\n\n\n<li>Validate your \u201cbefore vs after\u201d improvements with data.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. AI-Assisted Tools (Already Lining Up With Your Training Content)<\/h2>\n\n\n\n<p>On top of all the above, you can layer <strong>AI-based tools<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GitHub Copilot \/ Copilot Chat<\/strong> \u2013 helps rewrite LINQ and SQL, explain performance issues from plans.<\/li>\n\n\n\n<li><strong>Azure Data Studio Copilot<\/strong> \u2013 explains queries, suggests improvements.<\/li>\n\n\n\n<li>Generic AI (like me) \u2013 you can paste:\n<ul class=\"wp-block-list\">\n<li>query text<\/li>\n\n\n\n<li>execution plan XML (or summary)<\/li>\n\n\n\n<li>table schema<br>and ask for \u201cindex and query optimization suggestions\u201d.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>The key is: <strong>AI + Query Store + Execution Plans + DMVs<\/strong> = extremely powerful combo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. What I\u2019d Recommend You Use First (Concrete Path for You)<\/h2>\n\n\n\n<p>Given everything you\u2019re already doing (training, labs, and deep .NET work), I\u2019d prioritize:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Query Store<\/strong>\n<ul class=\"wp-block-list\">\n<li>Turn it on for your key DBs.<\/li>\n\n\n\n<li>Use it as your main \u201ctop slow queries\u201d dashboard.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Actual Execution Plans + DMVs<\/strong>\n<ul class=\"wp-block-list\">\n<li>For each slow query, always:\n<ul class=\"wp-block-list\">\n<li>Get the actual plan.<\/li>\n\n\n\n<li>Run the DMV scripts we built in Appendix B.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>SQL Profiler \/ Extended Events<\/strong>\n<ul class=\"wp-block-list\">\n<li>Use them when debugging real-time issues or verifying EF Core behavior (N+1, too many round-trips).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>PerfMon + basic APM<\/strong>\n<ul class=\"wp-block-list\">\n<li>To see if the bottleneck is SQL, CPU, or something else.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Optional 3rd-party<\/strong>\n<ul class=\"wp-block-list\">\n<li>If you want a polished view: Redgate SQL Monitor or a full APM like Datadog \/ New Relic.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Category Tool Name Type Purpose \/ What It Does Best For Cost Built-in SQL Server Tools Query Store Native feature Captures query history, execution plans, regressions; identifies top slow queries. Performance tuning, plan forcing Free Execution Plans (Actual\/Estimated) Native feature Visualizes how SQL runs (scans, seeks, joins, memory spills). Query tuning &amp; indexing Free Dynamic&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_joinchat":[],"footnotes":""},"categories":[11138],"tags":[],"class_list":["post-54352","post","type-post","status-publish","format-standard","hentry","category-best-tools"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/54352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=54352"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/54352\/revisions"}],"predecessor-version":[{"id":54354,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/54352\/revisions\/54354"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=54352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=54352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=54352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}