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

    Mysql慢查询日志

    数据库的慢查询是影响项目性能的一大因素,对于数据库我们要优化SQL,首先要找到需要优化的SQL,这就需要我们知道sql执行时间等信息,除了使用SHOW PROFILES;外,mysql也提供了“慢查询日志”功能,用来记录查询时间超过某个设定值的SQL,这将极大程度帮助我们快速定位到症结所在,以便对症下药。

    一、慢查询配置

    关于慢查询日志,主要涉及三个参数:

    • slow_query_log :是否开启慢查询日志功能(必填)
    • long_query_time :超过设定值,将被视作慢查询,并记录至慢查询日志文件中(必填)
    • slow_query_log_file :慢查询日志文件(不必填),可以通过show variables like '%slow_query%';查询日志位置

    打开慢查询日志有两种方式:

    1. 通过命令行

    不需要重启命令行,临时性的,退出mysql终端就失效。

    # 以下操作管理员才有权限
    
    mysql> set global slow_query_log = ON;
    Query OK, 0 rows affected (0.04 sec)
    
    # 设置查询“超时”时间(这里为了方便日志打印,将超过0.001s的都作为慢查询)
    mysql> set GLOBAL long_query_time = 0.001;
    Query OK, 0 rows affected (0.00 sec)
    

    2. 通过配置文件

    需要重启mysql

    # 慢日志相关配置
    slow_query_log = ON
    long_query_time = 0.001
    slow_query_log_file = /usr/local/mysql/data/slow.log
    

    二、慢日志查询

    如果操作正确,那么在日志里面就会看到类似下面的:

    # Time: 200303 14:54:38
    # User@Host: wangjun[wangjun] @ localhost []
    # Thread_id: 47  Schema: scujoo  QC_hit: No
    # Query_time: 0.024923  Lock_time: 0.000130  Rows_sent: 3488  Rows_examined: 3488
    # Rows_affected: 0  Bytes_sent: 354872
    SET timestamp=1583218478;
    select * from account;
    /usr/sbin/mysqld, Version: 10.3.15-MariaDB-1-log (Raspbian testing-staging). started with:
    Tcp port: 0  Unix socket: /run/mysqld/mysqld.sock
    Time		    Id Command	Argument
    # Time: 200303 15:05:30
    # User@Host: [root] @ localhost []
    # Thread_id: 8  Schema: mysql  QC_hit: No
    # Query_time: 0.001743  Lock_time: 0.000168  Rows_sent: 1  Rows_examined: 1
    # Rows_affected: 0  Bytes_sent: 252
    use mysql;
    SET timestamp=1583219130;
    show variables like 'datadir';
    # User@Host: [root] @ localhost []
    # Thread_id: 10  Schema:   QC_hit: No
    # Query_time: 0.007002  Lock_time: 0.000238  Rows_sent: 36  Rows_examined: 69
    # Rows_affected: 0  Bytes_sent: 2391
    SET timestamp=1583219130;
    select concat('select count(*) into @discard from `',
                        TABLE_SCHEMA, '`.`', TABLE_NAME, '`') 
          from information_schema.TABLES where TABLE_SCHEMA<>'INFORMATION_SCHEMA' and TABLE_SCHEMA<>'PERFORMANCE_SCHEMA' and ( ENGINE='MyISAM' or ENGINE='Aria' );
    # Time: 200303 15:06:41
    
  • 相关阅读:
    67. Add Binary
    66. Plus One
    64. Minimum Path Sum
    63. Unique Paths II
    How to skip all the wizard pages and go directly to the installation process?
    Inno Setup打包之先卸载再安装
    How to change the header background color of a QTableView
    Openstack object list 一次最多有一万个 object
    Openstack 的 Log 在 /var/log/syslog 里 【Ubuntu】
    Git 分支
  • 原文地址:https://www.cnblogs.com/scuwangjun/p/12464338.html
Copyright © 2011-2022 走看看