[笔记] mysql优化前的诊断

不能盲目的作优化,要先找准问题所在,是cpu,内存,io?仍是峰值,语句?mysql

1、mysql优化套路

2、相关命令

观察服务器状态

mysql> show status; 或 mysqladmin exts;sql

观察链接的工做状态

mysql> show processlist;服务器

状态说明:mysql优化

  • converting HRAP to MyIsAM 把查询结果放在磁盘(取得数据太多)工具

  • create tmp table 建立临时表(索引须要优化)性能

  • copying to tmp table to disk 把内存临时表复制到磁盘(索引须要优化,索引字段)测试

  • locked 被其余查询锁住(事务)优化

  • logging slow query 记录慢查询spa

观察具体语句执行

准备:日志

  1. 检查是否开启profiling

show variables like 'profiling';

  1. 开启profiling

set profiling=on;

show profiles;    //显示执行语句的执行信息(含语句query_id)
show profile for query 1; //获取 query_id 为1的语句的执行信息
explain (sql语句) \G;  //解析sql执行计划

3、慢查询日志

mysql> show variables like 'show_query%';  //能够看到是否开启,和日志路径 
mysql> show variables like '%long_query%'; //慢查询临界值,超过该值则记入慢查询

//开启
mysql> set global slow_query_log=1;

4、awk脚本 简便的文本处理工具

mysqladmin -uroot ext|awk 'Queries/{q=$4}/Threads_connected/{c=$4}/Threads_running/{r=$4}END{printf("%d %d %d\n",q,c,r)}'

5、sysbench 测试CPU性能

待续……

相关文章
相关标签/搜索