以下是在Ubuntu上排查MySQL性能瓶颈的常用方法:
top、htop、vmstat、iostat命令查看CPU、内存、磁盘I/O等系统资源使用情况,判断是否存在资源不足。df -h命令确认磁盘空间是否充足,避免因空间不足导致性能下降。sudo tail -f /var/log/mysql/error.log查看错误日志,排查异常错误。/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf,重点关注innodb_buffer_pool_size、max_connections等关键参数是否合理。slow_query_log=1、long_query_time=2(单位:秒),记录执行时间超过阈值的SQL语句。pt-query-digest /var/log/mysql/slow.log工具分析慢查询,找出耗时高的查询语句及优化方向(如添加索引、优化SQL逻辑)。EXPLAIN,查看是否使用索引、是否存在全表扫描等问题。SHOW STATUS、SHOW GLOBAL STATUS、SHOW PROCESSLIST命令查看连接数、缓冲池命中率、锁等待等指标。SHOW ENGINE INNODB STATUS查看InnoDB存储引擎的详细状态,如锁等待、事务日志等。OPTIMIZE TABLE整理表碎片。innodb_buffer_pool_size(建议设置为服务器内存的50%-80%)、innodb_log_file_size等参数。mysqltuner分析配置并给出优化建议,或通过Prometheus+Grafana实现可视化监控。pt-query-digest、pt-kill等工具,用于慢查询分析、自动终止慢查询等。