MySQL 查找性能差的SQL
2017-08-08 15:54
204 查看
## SQL查询优化
### 如何获取性能差的sql
1. 通过用户反馈获取的存在性能问题的SQL
2. 通过慢查日志获取的存在性能问题的SQL
show_query_log 启动停止慢查询日志参数 ON
set global
show_query_log_file 慢查询日志存放的地址和文件
long_query_time 慢查询记录的阈值单位s 默认10s 建议使用0.001
log_queries_not_useing_indexes
使用 show variables like “%query%” 查询参数 因为5.6之前的某些版本是ong_query_time, long_query_time和log-slow-queries。
与mysqldumpslow相关的配置变量:
slow_query_log:是否开启慢查询日志
long_query_time:是否设置慢查询的SQL执行规定时间
slow_query_log_file:设置慢查询日志记录位置
log_queries_not_using_indexes:是否设置了把没有索引的记录到慢查询日志
设置慢查询日志相关参数
开启慢查询日志
set global slow_query_log=on;
设置没有索引的记录到慢查询日志
set global log_queries_not_using_indexes=on;
设置到慢查询日志的 SQL 执行时间(单位是秒 默认是10S 可以精确到微妙)
set global long_query_time=0.001;
设置慢查询日志的存放位置(最好设置 否则存放在mysql默认的存放数据的目录,日志和数据分开)
set global slow_query_log_file=”/Users/LuisEdware/Code/output/mysql-slow.log”;
注:重启MySQL服务设置会失效,如果想要配置持久生效,需要在my.ini配置文件编辑上述变量。
命令: pt-query-digest slow.logs
这个部分是一个大致的概要信息(类似loadrunner给出的概要信息),通过它可以对当前MySQL的查询性能做一个初步的评估,比如各个指标的最大值(max),平均值(min),95%分布值,中位数(median),标准偏差(stddev)。这些指标有查询的执行时间(Exec time),锁占用的时间(Lock time),MySQL执行器需要检查的行数(Rows examine),最后返回给客户端的行数(Rows sent),查询的大小。
### 如何获取性能差的sql
1. 通过用户反馈获取的存在性能问题的SQL
2. 通过慢查日志获取的存在性能问题的SQL
show_query_log 启动停止慢查询日志参数 ON
set global
show_query_log_file 慢查询日志存放的地址和文件
long_query_time 慢查询记录的阈值单位s 默认10s 建议使用0.001
log_queries_not_useing_indexes
慢查询日志分析工具
mysqldumpslow
mysqldumpslow是一个针对于MySQL慢查询的命令行程序。在配置MySQL相关参数后,可以通过mysqldumpslow查找出查询较慢的SQL语句。使用 show variables like “%query%” 查询参数 因为5.6之前的某些版本是ong_query_time, long_query_time和log-slow-queries。
与mysqldumpslow相关的配置变量:
slow_query_log:是否开启慢查询日志
long_query_time:是否设置慢查询的SQL执行规定时间
slow_query_log_file:设置慢查询日志记录位置
log_queries_not_using_indexes:是否设置了把没有索引的记录到慢查询日志
设置慢查询日志相关参数
开启慢查询日志
set global slow_query_log=on;
设置没有索引的记录到慢查询日志
set global log_queries_not_using_indexes=on;
设置到慢查询日志的 SQL 执行时间(单位是秒 默认是10S 可以精确到微妙)
set global long_query_time=0.001;
设置慢查询日志的存放位置(最好设置 否则存放在mysql默认的存放数据的目录,日志和数据分开)
set global slow_query_log_file=”/Users/LuisEdware/Code/output/mysql-slow.log”;
注:重启MySQL服务设置会失效,如果想要配置持久生效,需要在my.ini配置文件编辑上述变量。
pt-query-digest(推荐)
pt-query-digest可以从普通MySQL日志,慢查询日志以及二进制日志中分析查询,甚至可以从SHOW PROCESSLIST和MySQL协议的tcpdump中进行分析,如果没有指定文件,它从标准输入流(STDIN)中读取数据。命令: pt-query-digest slow.logs
这个部分是一个大致的概要信息(类似loadrunner给出的概要信息),通过它可以对当前MySQL的查询性能做一个初步的评估,比如各个指标的最大值(max),平均值(min),95%分布值,中位数(median),标准偏差(stddev)。这些指标有查询的执行时间(Exec time),锁占用的时间(Lock time),MySQL执行器需要检查的行数(Rows examine),最后返回给客户端的行数(Rows sent),查询的大小。
实时获取存在性能问题的SQL
select id,user,host,db,command ,time,state,info from information_schema.processlist where time>60;相关文章推荐
- mysql 查找具体sql执行性能
- MySQL SQL性能分析
- 查找前十条性能差的sql,优化索引
- Mysql 性能优化7【重要】sql语句的优化 慢查询
- MySQL 数据库性能优化之SQL优化
- mysql show profiles 使用分析sql 性能
- MySQL 数据库性能优化之SQL优化
- mysql show profiles 使用分析sql 性能
- MySQL 的性能(上篇)—— SQL 执行分析
- Mysql性能优化案例研究 - 覆盖索引和SQL_NO_CACHE
- MySql使用全记录6 -----MySQL批量SQL插入性能优化
- SQL 查询性能优化----解决书签查找
- 关于SQL中索引提高查找性能实验
- mysql 分析3使用分析sql 性能 show profiles ;
- 性能测试mysql慢SQL定位以及分析方法
- mysql使用Profiling分析query语句,sql语句性能优化
- 2018-1-11Mysql SQL性能优化
- MySQL性能优化 出题业务SQL优化
- mysql 分析查找执行效率慢的SQL语句
- mysql show profiles 使用分析sql 性能