程序员社区

MySQL调优工具

关于数据库调优有很多方面,核心思想是"通过调优工具先找到慢查询语句,然后进行分析"。

具体调优的方法请看 https://www.cnblogs.com/monkey-xuan/p/15858689.html

1.定位执行慢的SQL:慢查询日志

  • show variables like '%slow_query_log';  //查看慢查询日志是否开启
  • set global slow_query_log = 'ON';          //开启慢查询日志(默认不开启,在优化的时候手动开启)
  • set global long_query_time = 1;                  //设置临界时间为1s
  • show variables like '%slow_query_log%';   //查看慢查询日志文件位置
  • show status like 'slow_queries';                  //查看有多少个慢查询

 过命令行修改就是临时的,服务器重启就会恢复,也可以通过配置文件修改,就是永久的MySQL调优工具插图

2.慢查询日志分析工具mysqlDumpSlow

  • mysqldumpslow /日志文件的位置               //查看到慢查询的SQL语句

3.查看SQL的执行成本show profile

  • show profile 是MySQL提供的可以在当前会话中查看,SQL都做了什么,执行的资源消耗情况等。
  • show variables like 'profiling';   //查看是否开启
  • set profiling = 'ON';                   //开启show profile

MySQL调优工具插图1

4.分析查询语句:explain

explain工具可以打印出执行计划,这个执行计划就是MySQL优化器选择的一个执行计划。

MySQL调优工具插图2

  • id:在一个大的查询中,每一个select关键字都对应一个位置的id,id值越大,优先级越高,越先执行。id一样,从上到下顺序执行。
  • select_type:确定select对应的id查询的类型,也可以说该小查询在大查询中扮演的角色。
  • table:每一个查询对应的表名
  • partitions:分区表中的命中情况,非分区表,该值为null。
  • type:执行查询时的访问方式。由上到下,效率逐渐递减
    • system:表中只有一条记录,相当于系统表。或者Myism中count(*)也是这个类型
    • const:通过索引一次命中,匹配一行数据。比如:where id = 759 这种情况
    • eq_ref:唯一性索引扫描,等号右边是唯一的值,但是这个值是其他表查询的结果。如:select * from s1 inner join s2 on s1.id=s2.id;
    • ref:非唯一性索引扫描,等号右边是' '匹配。如:select * from s1 where key = 'a'; 
    • range:范围查询,一般用在between,< >.
    • index:遍历所有的索引树
    • All:全表扫描,完全不走索引
  • possible_keys:表示可能用到的索引
  • key:实际用到的索引
  • key_len:实际使用到的索引长度,越长越好,说明越精准匹配
  • ref:当使用索引列进行等值查询时,表示等号右边对象的信息。比如:select * from s1 inner join s2 on s1.id=s2.id;ref的值为:数据库名.s2.id。
  • rows:预估需要读取的记录数
  • filtered:表示rows中有百分之多少是有用的。越大越好
  • Extra:更精准的理解MySQL到底如何执行给定的查询语句。有几十个,列举重要的
    • Using temporary:使用了临时表
    • Using index:使用覆盖索引
    • Using where:使用where 过滤

 explain的四种输出格式:

  • 传统格式
  • JSON格式:explain format = JSON select...
  • TERR格式:explain format=tree select...
  • 可视化输出:使用软件工具MySQL Workbench

5.其他工具:

  • trace:可以跟踪优化器做出的各种决策
  • MySQL监控分析视图:sys schema

 

寄语我从来不相信什么懒洋洋的自由,我向往的自由是通过勤奋和努力实现的更广阔的人生,那样的自由才是珍贵的、有价值的

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL调优工具

一个分享Java & Python知识的社区