Skip to main content
Metrics type: Key MetricsCategory: Executive Overview

At a glance

A single 0 to 100 gauge that rolls up the instance’s most important operational signals into one number. For a platform lead who does not want to read ten separate gauges, this answers “is the database broadly healthy right now, and is it trending the right way?” It is deliberately a composite: no single metric can be green while the score is red, and no single metric tripping should turn it red on its own unless that metric is severe. Above 85 is comfortable, 70 to 85 is “watch it”, below 70 means at least one subsystem is hurting and the score drills down to tell you which.

Calculation

Each input metric is first mapped to a 0 to 100 sub-score against its own healthy band, then the sub-scores are combined by weight. The weighting prioritises the signals that most directly threaten availability and correctness:
Two rules shape the behaviour. First, severe single failures floor the score: a stopped replica thread or disk above 95% drives the relevant sub-score to near zero, and because they carry real weight the composite cannot stay green. Second, the inputs are normalised against bands, not raw thresholds, so the score degrades gradually as a metric approaches its limit rather than flipping at the boundary. The gauge shows the live composite; the 7-day sparkline plots the smoothed daily value so you can tell a one-off dip from a genuine downward trend. Tapping any segment of the gauge drills into the weakest contributing input.

Worked example

A platform team runs a MySQL 8.0 primary with one read replica behind an order-management service. On 22 Apr 26 at 14:00 BST the gauge reads 63, below the < 70 alert, after sitting around 91 all week. The drill-down shows the contributing sub-scores:
The story is clear at a glance: two inputs are dragging the score down, and replication is the heavier one. The DBA opens Replication Lag and finds a long-running batch UPDATE on the primary that the single-threaded replica SQL applier is struggling to keep up with, which is also why the slow-query rate ticked up. The fix is to break the batch update into smaller chunks and, longer term, enable parallel replication appliers. Within twenty minutes of the batch finishing, lag drains, the slow-query rate falls back, and the gauge climbs through 70 back toward 90. Three takeaways:
  1. The score is a router, not a diagnosis. A 63 does not tell you what is wrong; it tells you something is, and the drill-down tells you where to look. Always read the sub-scores, never just the headline.
  2. Two medium dips can matter more than one big one. Here neither replication nor slow-queries was catastrophic alone, but their combined weight crossed the alert. The composite exists precisely to catch this “death by two paper cuts” pattern that single-metric alerts miss.
  3. Trend beats snapshot. A score that drops to 63 and bounces back in five minutes is a transient; a score that has drifted from 91 to 76 to 63 over three days is a creeping regression. Read the 7-day sparkline before deciding whether to page someone.

Sibling cards to reference together

Reconciling against the source

Where to look in MySQL’s own tooling:
There is no single native command that produces this score; it is a Vortex IQ composite. To reproduce it, gather each input by hand: SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read%'; for the hit rate, SHOW REPLICA STATUS\G for lag and thread state, SHOW GLOBAL STATUS LIKE 'Threads_connected'; against SELECT @@max_connections; for saturation, and SHOW GLOBAL STATUS LIKE 'Slow_queries'; against Questions for the slow-query rate. The Performance Schema and sys schema views (for example sys.metrics) give a consolidated dump of most of these counters in one query if you want a single snapshot to compare.
Why our number may legitimately differ from a manual roll-up: Managed-service cross-checks:

Known limitations / FAQs

Why can’t I find a “health score” in MySQL itself? Because MySQL does not have one. This is a Vortex IQ composite built from native signals. The value is in combining several signals that DBAs normally read separately into one trendable number that an executive or on-call lead can act on without parsing seven gauges. To reproduce it you would gather each input by hand and apply the weights shown in the Calculation section. One metric is red but the score is still 80. Is that a bug? No, that is the design. A single input that is mildly degraded, especially a lower-weighted one like slow-query rate, will dent the composite but not crater it. The score is meant to reflect overall health, not the worst single reading. If you want to alert on a specific subsystem regardless of the composite, watch that input’s own card directly. The score dropped to 50 then recovered on its own in minutes. What happened? Most likely a transient: a brief replication lag spike from a large transaction, a momentary buffer-pool dip after a cache flush, or a short connection surge. The 7-day sparkline will show it as a single notch rather than a trend. Transients are normal; act on sustained declines, not blips. Does a planned restart tank the score? Briefly. After a restart the buffer pool is cold (low hit rate) and uptime resets, so the score dips for the first few minutes while the cache warms. It recovers as soon as the working set is back in memory. If the score stays low well after a restart, the cause is not the restart, it is an undersized buffer pool or a genuine load problem. Can I change the weights? The default weighting is fixed to reflect availability-critical signals, but the per-input alert thresholds that feed the sub-scores are configurable in the Alert Rules tab. If your workload tolerates higher replication lag (for example an analytics replica that is allowed to drift), raising that input’s threshold will stop it dragging the composite down unnecessarily. Why is the score below 70 when every individual gauge looks “fine” to me? Two or more inputs sitting in the amber band, each not bad enough to alarm you on its own, can combine to cross the composite alert. This is the “death by paper cuts” case the score is built to catch. Read the drill-down: it ranks the contributing inputs so you can see the cumulative drag even when no single metric screams. Does it include cross-platform or ecommerce signals? No. This card is purely instance-internal database health. Business-impact correlation (for example pool saturation coinciding with a storefront traffic burst) lives on the cross-platform cards such as MySQL Pool Saturation vs Traffic Burst. Keep the two views distinct: this one tells you the database is unwell, the cross-platform cards tell you what it is costing.

Tracked live in Vortex IQ Nerve Centre

MySQL Health Score is one of hundreds of KPI pulses Vortex IQ tracks across MySQL and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.