zoukankan      html  css  js  c++  java
  • 慢查询日志和profiling

    MySQL调优三步:  

      慢查询 (分析出现出问题的sql)

      Explain (显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句)

      Profile(查询到 SQL 会执行多少时间, 并看出 CPU/Memory 使用量, 执行过程中 Systemlock, Table lock 花多少时间等等.)

    慢查询日志:

      MySQL 提供了慢查询日志。这个日志会记录所有执行时间超过 long_query_time(默认是 10s)的 SQL 及相关的信息。

    mysql> show variables like 'long_query_time';
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 |
    +-----------------+-----------+
    1 row in set
    mysql> show variables like 'slow_query%';
    +---------------------+--------------------------------------+
    | Variable_name       | Value                                |
    +---------------------+--------------------------------------+
    | slow_query_log      | OFF                                  |
    | slow_query_log_file | /var/log/mysql/log-slow-queries.log  |
    +---------------------+--------------------------------------+
    2 rows in set

      slow_query_log 指的是慢查询日志是否开启。

      slow_query_log_file 指明了日志所在的位置。

    开启方法:

      修改配置文件my.cnf或my.ini中的相应参数。

      或者用set在命令行设置相应的变量

      在开启了 MySQL 慢查询日志一段时间之后,日志中就会把所有超过 long_query_time 的 SQL 记录下来。

      另一个有用的相关 MySQL 命令是 mysqldumpslow:由于慢查询日志可能很大或者很难分析,使用它可以获得 MySQL 对慢查询日志的一个总结报告,直接获得我们想要的统计分析后的结果。

    Show命令:

      我们可以通过show命令查看MySQL状态及变量,找到系统的瓶颈:

      Mysql> show status ——显示状态信息(扩展show status like ‘XXX’)

      Mysql> show variables ——显示系统变量(扩展show variables like ‘XXX’)

      Mysql> show innodb status ——显示InnoDB存储引擎的状态

      Mysql> show processlist ——查看当前SQL执行,包括执行状态、是否锁表等

    profiling分析查询:

      通过慢日志查询可以知道哪些SQL语句执行效率低下,通过explain我们可以得知SQL语句的具体执行情况,索引使用等,还可以结合show命令查看执行状态。

      如果觉得explain的信息不够详细,可以通过profiling命令得到更准确的SQL执行消耗系统资源的信息。

      首先,set profiling=1,开启profiling

      show profiles; 可以得到被执行的SQL语句的时间和ID

      show profile for query 1; 得到对应SQL语句执行的详细信息

  • 相关阅读:
    Python 编码错误解决方案
    Slf4j 打日志的问题 Exception 没有堆栈信息
    朋友遇到过的t厂面试题
    php 加密解密算法
    mysql replace into用法详细说明
    python3 return print 之间的差异
    mac多版本python安装 pymysql
    thinkphp 在做搜索时的注意点
    get_object_vars()
    php中var关键字的作用和意义
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/9229731.html
Copyright © 2011-2022 走看看