zoukankan      html  css  js  c++  java
  • mysql慢查询问题查找

    1. 慢查询日志

    #该参数用来控制慢查询日志是否开启

    slow_query_log=1

    #来指定慢查询日志的文件名

    slow_query_log_file=slow_query.log

    #用来配置查询的时间限制, 超过这个时间将认为值慢查询, 将需要进行日志记录, 默认10s

    long_query_time=10

    2. show processlist

    通过show processlist命令查看当前MySQL在进行的线程,包括线程的状态、是否锁表等,可以实时地查看 SQL 的执行情况.

    1)command列,显示当前连接的执行的命令,一般取值为休眠(sleep),查询(query),连接(connect)等

    2)time列,显示这个状态持续的时间,单位是秒

    3)state列,显示使用当前连接的sql语句的状态,很重要的列。state描述的是语句执行中的某一个状态。一 个sql语句,以查询为例,可能需要经过copying to tmp table、sorting result、sending data等状态 才可以完成

    4)info列,显示这个sql语句,是判断问题语句的一个重要依据

    3. explain分析执行计划

    通过以上步骤查询到效率低的 SQL 语句后,可以通过 EXPLAIN或者 DESC命令获取 MySQL如何执行 SELECT 语句 的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序。
    
    

     

    说明:一般来说, 我们需要保证查询至少达到 range 级别, 最好达到ref

    explain 之 extra

    4. show profile分析SQL

    show profiles 能够在做SQL优化时 帮助我们了解时间都耗费到哪里去了

    通过 have_profiling 参数,能够看到当前MySQL是否支持profile:

    默认profiling是关闭的,可以通过set语句在Session级别开启profiling:

    set profiling=1; //开启profiling 开关;

    执行完sql语句之后,再执行show profiles 指令, 来查看SQL语句执行的耗时:

    通过show profile for query query_id 语句可以查看到该SQL执行过程中每个线程的状态和消耗的时间:

  • 相关阅读:
    根据屏幕大小,加载不同大小的图片
    规范命名CSS
    iframe框架加载完成后执行函数
    js获取IP地址
    80端口被System占用 造成Apache不能启动的解方案
    自定义一个仿Spinner
    让你的代码量减少3倍!使用kotlin开发Android(一)
    屏幕适配
    一个旋转菜单
    手势监听GestureDetector 案例
  • 原文地址:https://www.cnblogs.com/654wangzai321/p/14445893.html
Copyright © 2011-2022 走看看