Dear Percona Support / Engineering Team,
We are currently investigating a significant observability gap and would like your guidance on whether a native or PMM-integrated solution exists.
pmm-server version: 2.39.0
mysql version: Mysql 8 / 8.4
We were checking on the “MySQL Query Response Time Details” dashboard in PMM, which was powered by the query_response_time plugin (available in Percona Server 5.6/5.7). This dashboard provided response time distribution histograms.
However, as confirmed in your official documentation (PMM MySQL Query Response Time Details), this dashboard and the underlying plugin have been removed in MySQL/Percona Server 8.0+.
As a result, DB-side mechanism to observe P90/P95/P99 query latencies. We are entirely dependent on application teams to provide query latency data, which:
-
Creates a bottleneck during incident response and RCA
-
Prevents us from proactively identifying slow query regressions
-
Makes it impossible to set DB-side SLOs on query latency
What We Have Tried So Far
1. PMM QAN (Performance Schema source)
QAN provides average query time and max query time per digest, but does not natively expose P90/P95/P99 percentile columns in its UI or standard dashboards.
2. performance_schema.events_statements_histogram_global
SELECT
ROUND(BUCKET_QUANTILE * 100, 1)AS percentile,
ROUND(BUCKET_TIMER_HIGH / 1000000000, 3)AS latency_ms
FROM performance_schema.events_statements_histogram_global
WHERE BUCKET_QUANTILE >= 0.95
ORDER BYBUCKET_QUANTILELIMIT 1;
This works but is global only , it aggregates all queries together and does not give per-query-digest percentiles. It is also cumulative, making time-windowed trending difficult.
3. QUANTILE_95 / QUANTILE_99 columns in events_statements_summary_by_digest
SELECT
SCHEMA_NAME,
LEFT(DIGEST_TEXT, 80) AS query,
COUNT_STARAS calls,
ROUND(QUANTILE_95 / 1000000000, 3)AS p95_ms,
ROUND(QUANTILE_99 / 1000000000, 3)AS p99_ms
FROM performance_schema.events_statements_summary_by_digest
WHERE SCHEMA_NAME IS NOT NULL AND COUNT_STAR > 100
ORDER BYQUANTILE_99DESC LIMIT 20;
This gives per-digest percentiles natively in MySQL 8.0+, which is promising. However, it is still cumulative and we are unsure of the best way to integrate this into PMM dashboards as a time-series metric.
4. sys.statements_with_runtimes_in_95th_percentile
Useful for ad-hoc investigation but not suitable for continuous monitoring or alerting.
We would appreciate your guidance on the following:
-
Is there a native PMM 2/3.x dashboard or built-in panel that already visualizes P90/P95/P99 per query digest using
QUANTILE_95/QUANTILE_99fromevents_statements_summary_by_digest? If not, is this on the PMM roadmap? -
Does PMM’s
mysqld_exporteralready scrapeQUANTILE_95/QUANTILE_99columns fromevents_statements_summary_by_digestand expose them as Prometheus metrics? If yes, what are the metric names so we can build Grafana panels on top of them? -
What is the recommended approach for time-windowed P95/P99 metrics given that
events_statements_summary_by_digestis cumulative? -
Is there a concern about
Performance_schema_digest_loston high-throughput instances (we run several hundred thousand QPS clusters)? What is the recommendedperformance_schema_digests_sizesetting for production workloads at this scale? -
Is there any plan to reintroduce a response-time distribution dashboard for MySQL 8.0/8.4 in PMM that is equivalent to the legacy “MySQL Query Response Time Details” dashboard, leveraging
events_statements_histogram_by_digest? -
For MySQL 8.4 LTS specifically , are there any new Performance Schema enhancements or PMM 3.x features that improve per-query latency observability compared to MySQL 8.0?
Thanks in advance.