性能表(events_statements_summary_by_digest)数据写满的情况下,如何计算出高频次执行的sql及时间耗费
时间: 2024-02-21 14:02:22 浏览: 89
显示 sql 执行效率.
如果性能表(events_statements_summary_by_digest)的数据写满了,可以通过以下步骤计算出高频次执行的SQL语句及时间耗费:
1. 根据events_statements_summary_by_digest视图中的DIGEST值,查询performance_schema.events_statements_history_long表,获取这些SQL语句的详细执行信息,包括执行时间、锁等待时间、扫描行数等等。例如,以下查询可以查询出某个digest的执行次数、总执行时间和平均执行时间:
```
SELECT digest, COUNT(*) AS executions, SUM(TIMER_WAIT) AS total_latency, AVG(TIMER_WAIT) AS avg_latency
FROM performance_schema.events_statements_history_long
WHERE digest = '<digest>'
GROUP BY digest;
```
2. 根据上述查询结果,可以确定高频次执行的SQL语句及其总执行时间和平均执行时间。如果需要进一步分析,可以使用EXPLAIN命令分析SQL语句的执行计划,并使用慢查询日志记录执行时间超过某个阈值的SQL语句,以便后续分析和优化。
注意,如果events_statements_summary_by_digest视图的数据写满了,可以使用FLUSH TABLES命令清空视图中的数据。另外,建议对performance_schema.events_statements_history_long表进行定期清理,以避免数据积累过多导致性能问题。
阅读全文