树下水月头像
关注

mysql 性能判断

mysql 性能

SHOW GLOBAL STATUS
WHERE Variable_name IN (
  'Threads_connected',
  'Threads_running',
  'Max_used_connections',
  'Connections',
  'Slow_queries',
  'Aborted_connects'
);

SHOW VARIABLES LIKE 'max_connections';
SHOW FULL PROCESSLIST;

主要看:

  • Threads_connected:当前已建立的连接数,包括空闲连接。
  • Threads_running:当前正在执行、非休眠的连接数。若持续偏高,要进一步看 SQL、锁和 CPU;瞬时高值不一定代表问题。
  • Max_used_connections:MySQL 启动以来连接数峰值。接近 max_connections 才说明数据库连接上限可能成为问题。
  • Slow_queries:慢查询计数。应结合慢查询日志和具体 SQL 分析。
  • SHOW FULL PROCESSLIST:看连接是在执行什么,还是大量处于 Sleep。大量 Sleep 不等于数据库正在高负载,但会占连接。

还可以找累计耗时最高的 SQL(适用于常见 MySQL 5.7/8.0 环境):

SELECT
  DIGEST_TEXT,
  COUNT_STAR,
  ROUND(SUM_TIMER_WAIT / 1e12, 2) AS total_seconds,
  ROUND(AVG_TIMER_WAIT / 1e9, 2) AS avg_ms,
  SUM_ROWS_EXAMINED,
  SUM_ROWS_SENT
FROM performance_schema.events_statements_summary_by_digest
WHERE DIGEST_TEXT IS NOT NULL
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;

SUM_ROWS_EXAMINED 很高、平均耗时高,或扫描行数远大于返回行数的 SQL,通常值得用 EXPLAIN 检查索引和执行计划。若要启用慢查询日志,先确认日志保留、磁盘空间和 long_query_time 设置,避免日志量过大。

应用服务器也要一起看:CPU 是否长期打满、内存和磁盘 I/O 是否紧张;同时记录接口 P95/P99 耗时、连接获取等待时间,以及连接池状态 created / inuse / max。例如 inuse 长期等于 max,更像池容量或连接归还问题;池没满但 SQL 耗时高,则应优先查查询和数据库负载。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/u013416034/article/details/166590290

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--