如何查看慢SQL

前提准备

  1. Windows/linux环境下搭建mysql流程

  2. 创建用户、库、表

配置配置文件my.ini

  1. 如果安装路径下没有my.ini文件,则手动创建一个,然后输入的内容参考第二步
  2. my.ini中复制如下内容:详见地址:https://www.cnblogs.com/gne-hwz/p/9720519.html

    [client]
    port=3306

    [mysql]
    no-beep

    # default-character-set=

    [mysqld]
    port=3306

    # mysql根目录,自己改下
    basedir="D:\AppServ\mysql5.7\"

    # 放所有数据库的data目录,自己改下
    datadir=D:\AppServ\mysql5.7\data

    # character-set-server=

    # 默认存储引擎innoDB
    default-storage-engine=INNODB

    # Set the SQL mode to strict
    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    #日志输出为文件
    log-output=FILE

    # 是否开启sql执行结果记录,必须要设置general_log_file参数,日志的路径地址
    # 即日志跟踪,1为开启,0为关闭,咱开启
    general-log=0
    general_log_file="execute_sql_result.log"

    # 配置慢查询,5.7版本默认为1,这里long_query_time=10要改很小,方便出慢sql日志
    slow-query-log=1
    slow_query_log_file="user-slow.log"
    long_query_time=10

    #默认不开启二进制日志
    #log-bin=mysql-log

    #错误信息文件设置,会将错误信息放在data/mysql.err文件下
    log-error=mysql.err

    # Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
    server-id=1

    #lower_case_table_names: 此参数不可以动态修改,必须重启数据库
    #lower_case_table_names = 1  表名存储在磁盘是小写的,但是比较的时候是不区分大小写
    #lower_case_table_names=0  表名存储为给定的大小和比较是区分大小写的 
    #lower_case_table_names=2, 表名存储为给定的大小写但是比较的时候是小写的
    lower_case_table_names=1

    #限制数据的导入导出都只能在Uploads文件中操作,这个是在sql语句上的限制。
    #secure-file-priv="D:\AppServ\mysql-5.7.23/Uploads"
    #值为null ,也就是注释掉这个参数或者secure-file-priv=null。表示限制mysqld 不允许导入|导出
    #值为/tmp/ ,即secure-file-priv="/tmp/" 表示限制mysqld 的导入|导出只能发生在/tmp/目录下
    #没有具体值时,即secure-file-priv=      表示不对mysqld 的导入|导出做限制

    # 最大连接数
    max_connections=151
    # 打开表的最大缓存数
    table_open_cache=2000

    # tmp_table_size 控制内存临时表的最大值,超过限值后就往硬盘写,写的位置由变量 tmpdir 决定 
    tmp_table_size=16M

    # 每建立一个连接,都需要一个线程来与之匹配,此参数用来缓存空闲的线程,以至不被销毁,
    # 如果线程缓存中有空闲线程,这时候如果建立新连接,MYSQL就会很快的响应连接请求。
    # 最大缓存线程数量
    thread_cache_size=10

  3. 特别强调,更改如下配置,

    # 是否开启sql执行结果记录,必须要设置general_log_file参数,日志的路径地址
    # 即日志跟踪,1为开启,0为关闭,咱开启
    general-log=1
    general_log_file="execute_sql_result.log"

    # 配置慢查询,5.7版本默认为1,这里long_query_time=10要改很小,方便出慢sql日志
    slow-query-log=1
    slow_query_log_file="user-slow.log"
    long_query_time=0
    .00001

  4. 重启mysql服务
  5. 重启后,可以通过cmd命令查看下设置是否生效:
  6. 通过业务执行或者直接通过图形化操作工具执行sql命令,如,SELECT a.api_name,b.case_id FROM interface_api AS a INNER JOIN interface_data_store AS b ON a.api_id=b.api_id; 可以看到执行时间是0.003sec,大于定义的慢查询数值。
  7. 然后在如下路径下查看执行SQL执行日志和慢查询文件中的内容。

猜你喜欢

转载自blog.csdn.net/chang_jinling/article/details/97134976