要定位 MySQL 中 CPU 占用高的查询语句,可以按照以下步骤进行:
- 打开 MySQL 的慢查询日志功能。
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1
log_queries_not_using_indexes = 1
- 在慢查询日志中查找 CPU 占用高的查询语句。
grep "Query_time" /var/log/mysql/mysql-slow.log | sort -n -r -k 2 | more
或
mysqldumpslow -s t -t 10 /var/log/mysql/mysql-slow.log
- 使用 MySQL 自带的性能分析工具 EXPLAIN 分析查询语句,并优化查询语句。
EXPLAIN SELECT * FROM table WHERE ...
- 使用 MySQL 自带的性能监控工具 PERFORMANCE_SCHEMA 监控查询语句的 CPU 使用情况。
SELECT * FROM performance_schema.events_statements_summary_by_digest WHERE digest_text LIKE '%SELECT%';