这篇文章主要介绍“怎么获取有性能问题的sql”,在日常操作中,相信很多人在怎么获取有性能问题的sql问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么获取有性能问题的sql”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
用户反馈:获取存在性能问题的sql
慢查询日志:获取存在性能问题的sql
实时获取存在性能的sql
使用慢查询日志获取有性能问题的sql
slow_query_log 启动停止记录慢查询日志
slow_query_log_file 指定慢查询日志的存储路径以及文件
long_query_time 指定记录慢查询日志sql执行时间的阈值
log_queries_not_using_indexes 是否记录未使用的索引的sql
1:用户信息以及线程id
2:执行查询时间
3:锁的时间
4、返回数据行数
5、扫描数据的行数
6、执行sql时间
7、执行的sql
常用慢查询日志分析工具 mysqldumpslow
常用慢查询分析工具 pt-query-digest
pt-query-digest \
--explain h=127.0.0.1, u=root,p=p@ssW0rd \ slow-mysql.log
实时查询
查询处理各个阶段所消耗的时间
使用profile
1、set profiling = 1 ;
执行查询
启动profile
这是一个session级的配置
2、show profiles;
查看每一个查询所消耗的总时间的信息
mysql> show profiles;
+----------+------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+---------------------------------------------------------------------------------------------------------------------------------------------+
| 1 | 0.00012525 | sel
select count(*) from temp_shop_user |
| 2 | 0.09744925 | select count(*) from temp_shop_user
3、show profiles for query N;
查询的每个阶段所消耗的时间
mysql> show profile for query 1 ;
+--------------------+----------+
| Status | Duration |
+--------------------+----------+
| starting | 2.5E-5 |
| freeing items | 9.6E-5 |
| logging slow query | 3E-6 |
| cleaning up | 2E-6 |
+--------------------+----------+
4 rows in set
4、查询cpu信息
mysql> show profile cpu for query 3;
+----------------------+----------+----------+------------+
| Status | Duration | CPU_user | CPU_system |
+----------------------+----------+----------+------------+
| starting | 3.5E-5 | 0 | 0 |
| checking permissions | 6E-6 | 0 | 0 |
| Opening tables | 1.3E-5 | 0 | 0 |
| System lock | 6E-6 | 0 | 0 |
| init | 8E-6 | 0 | 0 |
| optimizing | 3E-6 | 0 | 0 |
| statistics | 7E-6 | 0 | 0 |
| preparing | 4E-6 | 0 | 0 |
| executing | 2E-6 | 0 | 0 |
| Sending data | 0.0296 | 0.03125 | 0 |
| end | 1E-5 | 0 | 0 |
| query end | 3E-6 | 0 | 0 |
| closing tables | 8E-6 | 0 | 0 |
| freeing items | 0.000125 | 0 | 0 |
| logging slow query | 2E-6 | 0 | 0 |
| cleaning up | 3E-6 | 0 | 0 |
+----------------------+----------+----------+------------+
16 rows in set
5、performance_schema
5.6之后版本,建议启用
1>进入performance_schema 库
mysql> use performance_schema ;
Database changed
2>mysql> update setup_instruments set enabled ='YES' where name like 'stage%';
Query OK, 0 rows affected
Rows matched: 0 Changed: 0 Warnings: 0
3>启动历史记录表
mysql> update setup_consumers set enabled ='YES' where name like 'events%';
Query OK, 0 rows affected
Rows matched: 6 Changed: 0 Warnings: 0
到此,关于“怎么获取有性能问题的sql”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。