• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 0

    Mysql定位慢查询

    Posted by 撒得一地 on 2015年10月28日 in Mysql优化
    国外稳定加速器推荐    Express | Vypr

    在项目开发中,有时候一条sql语句,就可能降低整体查询效率。所以sql语句优化是十分必要的。首先我们先了解下mysql数据库的一些运行状态查询,比如我想知道当前mysql运行的时间与及一共执行了多少次select、update语句等。

    一般语法是:

    show [session|global] status like .... 
    

    如果你不写 [session|global] 默认是session 会话,只取出当前窗口的执行,如果你想看所有(从mysql 启动到现在,则应该 选择global选项)

    常用的一些状态查询语句有:

    //查看mysql从启动到当前的时间
    show status like 'uptime';
    
    //查看mysql一共执行了多少次select语句
    show status like 'com_select'
    
    //查看mysql一共执行了多少次insert语句
    show status like 'com_insert'
    
    //查看mysql一共执行了多少次update语句
    show status like 'com_update'
    
    //查看mysql一共执行了多少次delete语句
    show status like 'com_delete'
    
    //查看mysql连接服务器的次数
    show status like 'connections'; 
    

    那么如何查看mysql设定的慢查询时间、mysql一共产生了多少次慢查询记录与及设定mysql慢查询时间。一般操作方法如下:

    //显示慢查询次数
    mysql> show status like 'slow_queries';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | Slow_queries  |  0    |
    +---------------+-------+
    1 row in set (0.00 sec)
    
    //查询mysql慢查询时间
    mysql> show variables like 'long_query_time';
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 |
    +-----------------+-----------+
    1 row in set (0.00 sec)
    

    从上面可以看到,mysql默认的慢查询时间是10秒。那么如何设定慢查询时间?

    //可以修改慢查询时间  只在当前窗口打开的期间有效 窗口关闭后立即失效
    set long_query_time=1 ;
    
    //设置永久生效时间 但要在下次重新登录后才开始生效
    set global long_query_time = 1; 
    

    了解了上面的一些语句后,我们来看看如何查询mysql是否开启了慢查询记录。常用的方法如下:

    mysql> show variables like '%slow%';
    +---------------------+------------+
    | Variable_name       |   Value    |
    +---------------------+------------+
    | log_slow_queries    |   OFF      |
    | slow_launch_time    |    2       |
    | slow_query_log      |   OFF      |
    | slow_query_log_file | /usr/data/slow.log |
    +---------------------+------------+
    4 rows in set (0.01 sec)
    

    通过命令查询,如果log_slow_queries和slow_query_log都为OFF,则说明mysql没有开启慢查询记录。
    那么mysql下如何开启慢查询记录?一般有下面两种方法:

    方法一:
    开启慢查询日志,没设置global时会提示错误,如下:

    mysql> set slow_query_log = 'ON';
    ERROR 1229 (HY000): Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL
    
    mysql> set global slow_query_log = 'ON';
    Query OK, 0 rows affected (0.08 sec)
    
    慢查询日志开启成功 可以查询下
    mysql> show variables like '%slow%';
    +---------------------+------------+
    | Variable_name       | Value      |
    +---------------------+------------+
    | log_slow_queries    | ON         |
    | slow_launch_time    | 2          |
    | slow_query_log      | ON         |
    | slow_query_log_file | /usr/data/slow.log |
    +---------------------+-----------------------------------+
    4 rows in set (0.00 sec)
    

    方法二:
    直接修改mysql配置文件,在[mysqld]里面加上下面内容:

    long_query_time = 2  //设置慢查询时间为2s
    
    log-slow-queries = /usr/data/slow.log  
    
    然后重启mysql:service mysqld restart
    

    如何修改mysql慢查询日志文件的存放地址,方法如下:

    mysql> set global slow_query_log_file = "/usr/data/psz-slow.log";
    
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> show variables like '%slow%';
    +---------------------+-------+
    | Variable_name       | Value |
    +---------------------+-------+
    | log_slow_queries    | ON    |
    | slow_launch_time    | 2     |
    | slow_query_log      | ON    |
    | slow_query_log_file | /usr/data/psz-slow.log |
    +---------------------+---------------+
    4 rows in set (0.00 sec)
    说明修改成功
    

    了解上面的用法后,下面测试慢查询:

    mysql> select sleep(2);
    +----------+
    | sleep(2) |
    +----------+
    |  0       |
    +----------+
    1 row in set (2.07 sec)
    

    然后用cat命令查看/usr/data/slow.log日志。也可以用mysql自带的慢查询分析工具mysqldumpslow来对数据进行分析。

    欢迎转载,转载请注明://www.cfage.com/888.html

    标签:,

    上一篇:

    下一篇:

    相关推荐

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    2 + 2 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 极速飞艇开奖记录走势图 七乐彩走势图近二百期 上海时时乐app 重庆彩票网 重庆时时彩开奖记录 北京pk10直播视频直播 刮刮乐中状元在线试刮 北京pk10庄家作弊视频 二八杠是什么 高频彩过滤 幸运赛车开奖查询 最新时时彩代理 彩经网走势图大全旧版 北京快8开奖结果查询 北京pk全天最稳计划 七星彩开奖号码结果