• msyql开启慢查询以及分析慢查询


    慢查询的用途是用来发现执行时间长的查询语句,以便对这些语句进行优化

    [mysqld]              #在这里面增加,其它地方无效
    #server-id=1
    #log-bin=master-bin
    slow_query_log=1      #开启查询
    slow_query_log_file=/bp/mysql.log       
    #慢查询日志文件存放位置,注意这个比较坑,要求目标目录可写,最好还是自己创建一个目录,并-R 添加写权限,这个是网上说的,不过我实验时发现赋777权限才可以
    long_query_time=1                       #定义超过1秒就算是慢查询,一般是5到10秒吧
    

    重启服务

    MariaDB [(none)]> show variables like '%slow%';
    +---------------------+--------------------------------------------------------------------------------------------------------------+
    | Variable_name       | Value                                                                                                        |
    +---------------------+--------------------------------------------------------------------------------------------------------------+
    | log_slow_filter     | admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
    | log_slow_queries    | ON                #开启成功                                                                                           |
    | log_slow_rate_limit | 1                                                                                                            |
    | log_slow_verbosity  |                                                                                                              |
    | slow_launch_time    | 2                                                                                                            |
    | slow_query_log      | ON                                                                                                           |
    | slow_query_log_file | /bp/mysql.log                                                                                                |
    +---------------------+--------------------------------------------------------------------------------------------------------------+
    7 rows in set (0.00 sec)
    
    MariaDB [(none)]> 
    

    那么怎么测试慢查询是否成功呢
    比较简单的一种方法就是select sleep(5);这条语句会执行5秒钟
    看一下慢查询日志文件

    [root@localhost bp]# cat mysql.log 
    /usr/libexec/mysqld, Version: 5.5.52-MariaDB (MariaDB Server). started with:
    Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock
    Time                 Id Command    Argument
    # Time: 170806 23:37:32
    # User@Host: root[root] @ localhost []
    # Thread_id: 2  Schema:   QC_hit: No
    # Query_time: 2.001045  Lock_time: 0.000000  Rows_sent: 1  Rows_examined: 0
    SET timestamp=1502087852;
    select sleep(2);
    # Time: 170806 23:37:38
    # User@Host: root[root] @ localhost []
    # Thread_id: 2  Schema:   QC_hit: No
    # Query_time: 3.000681  Lock_time: 0.000000  Rows_sent: 1  Rows_examined: 0
    SET timestamp=1502087858;
    select sleep(3);
    # Time: 170806 23:37:46
    # User@Host: root[root] @ localhost []
    # Thread_id: 2  Schema:   QC_hit: No
    # Query_time: 5.000415  Lock_time: 0.000000  Rows_sent: 1  Rows_examined: 0
    SET timestamp=1502087866;
    select sleep(5);
    [root@localhost bp]# 
    

    终端中执行以下命令
    mysqldumpslow -t 10 查看访问时间最长的10个sql语句
    mysqldumpslow -s c -t 10 查看访问次数最多的10个sql语句
    也可以考虑安装第三方分析工具,例如pt-query-digest
    具体自行百度吧(因为我运行之后报错了)

  • 相关阅读:
    js直接获取当前windows登陆账号---仅适用于IE
    Windows变量路径与通配符
    IDEA数据库生成Entity 带注释, 默认值
    BIM+区块链在建筑业施工过程结算的应用
    Java中动态规则的实现方式
    Git查看本地仓库关联关系以及清理无效远程分支
    Golang把字符串数组、[]interface{}打乱、切片乱序
    Golang将map数组按照指定字段排序
    Golang把时间和数字相乘报错invalid operation: second * time.Second (mismatched types int and time.Duration)
    Golang获取明日时间及距离明日凌晨的时间差
  • 原文地址:https://www.cnblogs.com/biaopei/p/7730491.html
Copyright © 2020-2023  润新知