mysql学习笔记-性能分析工具的使用
1、统计SQL的查询成本:last_query_cost
SHOW STATUS LIKE ‘last_query_cost’;
2、定位执行慢的 SQL:慢查询日志
MySOL的慢查询日志,用来记录在MySOL中 响应时间超过阀值的语句,具体指运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。
MySQL数据库 没有开启慢查询日志,需要我们手动来设置这个参数。如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。
show variables like’%slow_query_log’
set global slow_query_log=‘ON’
查询当前系统中有多少条慢查询记录
SHOW GLOBAL STATUS LIKE ‘%Slow_queries’;
生产环境使用日志分析工具
我们想要按照查询时间排序,查看前五条 SQL 语句,这样写即可:
mysqldumpslow -s t -t 5 /var/lib/mysql/atguigu01-slow.log
3、查看 SQL执行成本:SHOW PROFILE
show Profile是MySQL提供的可以用来分析当前会话中SQL 都做了什么、执行的资源消耗情况的工具,可用于sql调优的测量。 默认情况下处于关闭状态,并保存最近15次的运行结果。
4、分析查询语句explain
explain type 级别
system > const > eq _ref k ref > fulltext > ref_or_null> index_merge > unique_subquery> index_subquery > range>index > ALL
其中比较重要的几个提取出来(见上图中的蓝色)。SQL性能优化的目标:至少要达到range 级别,要求是ref级别,最好是 consts级别。
5、分析优化器执行计划:trace
OPTIMIZER_TRACE 是MySQL 5.6引|入的一项跟踪功能,它可以跟踪优化器做出的各种决策(比如访问表的方法各种开销计算、各种转换等),并将跟踪结果记录到INFORMATION_SCHEMA.OPTIMIZER_TRACE 表中。此功能默认关闭,开启trace,并设置格式为JSON,同时设置trace最大能够使用的内存大小,避免解析过程中因为默认内存过小而不能够完整展示。
select * from student where id < 10;
最后, 查询 information_schema.optimizer_trace 就可以知道MySQL是如何执行SQL的 :
select * from information_schema.optimizer_trace\G
6、MySQL监控分析视图-sys schema
Sys schema视图摘要
- 主机相关:以host_summary开头,主要汇总了IO延迟的信息。
- Innodb相关:以innodb开头,汇总了innodb buffer信息和事务等待innodb锁的信息。
- I/o相关:以io开头,汇总了等待I/O、I/O使用量情况。
- 内存使用情况:以memory开头,从主机、线程、事件等角度展示内存的使用情况
- 连接与会话信息:processlist和session相关视图,总结了会话相关信息。
- 表相关:以schema_table开头的视图,展示了表的统计信息。
- 索引信息:统计了索引的使用情况,包含冗余索引和未使用的索引情况。
- 语句相关:以statement开头,包含执行全表扫描、使用临时表、排序等的语句信息。
- 用户相关:以user开头的视图,统计了用户使用的文件I/O、执行语句统计信息。
- 等待事件相关信息:以wait开头,展示等待事件的延迟情况
原文地址:https://blog.csdn.net/weixin_37693463/article/details/145216169
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!