MySQL 慢查询的定位与优化
接口变慢、数据库 CPU/IO 升高、连接堆积。慢查询日志或 performance_schema 里能看到执行时间长的 SQL。
mysql -e 'SHOW VARIABLES LIKE "slow_query_log";'
mysql -e 'SHOW VARIABLES LIKE "long_query_time";'
mysql -e 'SHOW PROCESSLIST;'
mysql -e 'SHOW FULL PROCESSLIST;'
EXPLAIN SELECT ...;
EXPLAIN ANALYZE SELECT ...;
SHOW INDEX FROM app.orders;
SELECT * FROM sys.statement_analysis ORDER BY total_latency DESC LIMIT 10;
EXPLAIN 看 type、key、rows 和 Extra,确认是否走索引。SELECT *、深分页和大范围排序;必要时分页/异步导出。mysql — 连接与 SQLmysqldump — 备份mysqladmin — 状态合上页面,先回答,再展开对照。
EXPLAIN 中应重点看哪些字段判断是否走索引?slow_query_log 和 long_query_time 变量,结合 SHOW FULL PROCESSLIST、慢日志和 sys.statement_analysis 按总耗时排序。type、key、rows 和 Extra,确认是否使用索引、扫描行数是否过大。