SolarWinds Database Performance Analyzer (DPA) is one of the most widely used tools for proactive database performance monitoring and tuning. While DPA can seem overwhelming at first, mastering a few key areas — the Performance tab, its SQL Tuning and Storage subviews, and the Virtualization view — can give you a clear edge in diagnosing issues, preventing outages, and improving overall database efficiency.
In this guide, we’ll cover:
- The Performance Tab Overview
- SQL Tuning in DPA – Finding and fixing slow SQL queries
- Storage Analysis in DPA – Tracking waits, latency, and capacity
- Virtualization Benefits in DPA – Seeing beyond the database into the hypervisor layer
Whether you’re a junior DBA getting started or a seasoned admin looking to refine your approach, this walk-through will help you get the most from DPA.
1. The Performance Tab: Your Mission Control
When you log into DPA and open a monitored database instance, the Performance tab is where you’ll spend most of your tuning time.
What it shows you:
- Wait Time Analysis – The top graph breaks down database wait events over time. DPA’s strength is that it focuses on waits rather than just CPU or I/O usage, letting you see why queries are slow.
- Top SQL Statements – Below the graph, you’ll see ranked queries by total wait time. You can click into each to see trends, execution plans, and bind variables.
- Selectable Time Ranges – You can zoom into a performance spike and focus on the exact period that matters.
Pro tip: Always start with a spike in the wait time chart. Select that window, and all the subviews (SQL, sessions, programs, storage) will filter to that exact time. This prevents chasing irrelevant metrics.
2. SQL Tuning: Finding and Fixing Slow Queries
Click the SQL tab within the Performance view (or filter “SQL Statements” from the subview). This is where DPA becomes a true tuning tool rather than just a monitoring dashboard.
Key steps to use SQL Tuning effectively:
Step 1 – Identify the worst offenders
- Sort by Total Wait Time — this shows which SQL statements consumed the most database wait time in your selected window.
- Look for high Executions with low per-execution time (may be a good caching/indexing target) or low executions with very high per-execution time (likely heavy, expensive queries).
Step 2 – Drill down into SQL text
- Click the query hash to view the full SQL text.
- If bind variables are used, DPA will group similar statements together, which helps you tune at the logical query level rather than chasing literal values.
Step 3 – Review execution plans
- DPA can pull execution plans for most database platforms (SQL Server, Oracle, MySQL, PostgreSQL).
- Look for full table scans, nested loop joins on large datasets, and missing indexes.
Step 4 – Apply tuning changes
Common quick wins:
- Indexing – Add covering indexes for frequently filtered columns.
- Query rewriting – Replace subqueries with joins or CTEs, reduce unnecessary columns in SELECT, avoid SELECT *.
- Statistics updates – Out-of-date stats can cause bad execution plans.
- Parameter sniffing fixes – Use query hints, optimize for specific values, or parameterize effectively.
Step 5 – Validate improvements
- After making a change, re-measure wait times for that SQL over the next few hours/days.
- DPA keeps historical baselines so you can prove a performance gain.
For juniors: Focus first on understanding the type of wait (I/O, CPU, locking). That’s your north star for where to look next.
For seniors: Use historical data to find queries that have gradually worsened — these are often tied to data growth or statistics drift.
3. Storage Analysis: The Overlooked Performance Killer
Still in the Performance tab, switch to the Storage subview. This is critical because even perfectly tuned SQL will crawl if the underlying storage is slow.
What you can see in DPA’s Storage view:
- I/O Wait Types – Which waits are storage-related (e.g.,
PAGEIOLATCHin SQL Server,db file sequential readin Oracle). - Latency Metrics – Read and write latency at the database level.
- Throughput Trends – MB/s read/write activity over time.
- Device Mapping – In some setups, DPA can show which storage volume or LUN a database file is on.
How to use it:
- Correlate spikes – If a SQL spike lines up with a storage latency spike, you likely have an I/O bottleneck.
- Isolate filegroups/tablespaces – Identify if the problem is on a specific data file, log file, or tempdb tablespace.
- Check sustained latency – If latency is consistently above your vendor’s threshold (e.g., >5–10ms for SSD), storage is under-provisioned or oversubscribed.
Action steps:
- Work with your storage team to move heavy files to faster tiers.
- Ensure logs and data files are on separate spindles/volumes.
- Consider tempdb optimization (multiple data files, SSDs).
For juniors: Learn to read wait types — they’re your storage “smoke alarm.”
For seniors: Use DPA trends to justify infrastructure upgrades with hard numbers.
4. Virtualization: Seeing Beyond the Database
If your database runs on a virtual machine, DPA’s Virtualization view is invaluable. Many DBAs blame the database for slowness when the real problem is contention at the hypervisor layer.
What Virtualization shows (on-prem VMware/Hyper-V setups):
- Host CPU Ready Time – How long your VM waits to get CPU from the hypervisor. High values mean VM oversubscription.
- Host Memory Metrics – Ballooning, swapping, or compression activity can starve the database of RAM.
- Datastore Latency – Storage latency as seen from the VM’s perspective (different from DB-level latency).
- Cluster Overview – Shows if other noisy VMs are impacting your DB’s host.
Benefits of having this in DPA:
- One Pane of Glass – No need to jump into vCenter or Hyper-V Manager just to confirm resource contention.
- Proactive Alerts – Spot virtualization issues before they show up as database waits.
- Faster Root Cause Analysis – If CPU Ready spikes align with SQL slowdowns, it’s likely a virtualization scheduling issue, not bad SQL.
Practical uses:
- When you see high CPU waits in SQL but low CPU usage inside the VM → Check Host CPU Ready in Virtualization view.
- If storage latency is high at the VM level but not at the DB level → Look for datastore contention or SAN bottlenecks.
- If memory ballooning is active → Coordinate with the virtualization team to reserve more memory for the VM.
For juniors: Use this view to learn that not all “database problems” are actually database problems.
For seniors: Use the virtualization data to back up SLA negotiations with your VMware/Hyper-V teams.
A Note on AWS EC2
DPA’s Virtualization tab was built for direct integration with VMware vSphere and Microsoft Hyper-V.
If your SQL Server, Oracle, MySQL, or PostgreSQL instance is running in Amazon EC2:
- You will still get all the Performance, SQL Tuning, and Storage views — these come from the database engine itself.
- You will not get VMware/Hyper-V-specific metrics like Host CPU Ready, memory ballooning, or datastore contention, because AWS does not expose its hypervisor layer to DPA.
How to compensate in EC2:
- Use Amazon CloudWatch for host-level metrics:
- CPU Credit usage (for burstable instances like t3/t4)
- EBS volume latency, IOPS, and throughput
- Network packet rates and errors
- Correlate CloudWatch data with DPA wait time spikes to pinpoint infrastructure-level causes of slowdowns.
- Treat EC2 instances in DPA like physical servers — rely on DPA for database-level insights and CloudWatch for underlying host health.
This hybrid approach ensures you still get end-to-end visibility — you just gather hypervisor-level data from AWS instead of vCenter or Hyper-V Manager.
Final Thoughts
SolarWinds DPA isn’t just a monitoring tool — it’s a performance investigation platform.
- The Performance tab is your main hub for finding trouble spots.
- SQL Tuning identifies the actual queries to fix.
- Storage shows you if your disk layer is the real bottleneck.
- Virtualization connects the dots to the hypervisor, so you can stop guessing.
By combining these views, you move from reactive firefighting to proactive performance management.
For junior DBAs, it’s a crash course in reading performance signals. For senior DBAs, it’s a way to quickly validate instincts with data.
Discover more from SQLYARD
Subscribe to get the latest posts sent to your email.


