mysql 开发进阶篇系列 41 mysql日志之慢查询日志

时间:2022-12-24 11:00:00

一.概述

慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间。慢日志默认写入到参数datadir(数据目录)指定的路径下。默认文件名是[hostname]_slow.log,默认超时是10秒,默认不开启慢查询日志。下面查看慢日志的几个参数:

-- 是否开启慢日志
SHOW VARIABLES LIKE 'slow_query_log';

  mysql 开发进阶篇系列 41 mysql日志之慢查询日志

-- 慢日志文件记录位置
SHOW VARIABLES LIKE 'slow_query_log_file';

  mysql 开发进阶篇系列 41 mysql日志之慢查询日志

-- 慢日志设置超时sql阀值(时间秒) 默认10秒
SHOW VARIABLES LIKE 'long_query_time';

  mysql 开发进阶篇系列 41 mysql日志之慢查询日志

-- 慢日志存储方式
SHOW VARIABLES LIKE '%log_output%';

  mysql 开发进阶篇系列 41 mysql日志之慢查询日志

  log_output参数是指日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。支持同时两种日志存储方式如:log_output='FILE,TABLE'。另外:log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。

二. 设置慢日志参数

  下面设置my.cnf配置文件,将slow_query_log=1为开启慢查询记录,将long_query_time=1为记录超时1秒钟的sql语句。
    mysql 开发进阶篇系列 41 mysql日志之慢查询日志

  重启mysqld服务后,在次查询慢日志参数,如下所示:
    mysql 开发进阶篇系列 41 mysql日志之慢查询日志
    mysql 开发进阶篇系列 41 mysql日志之慢查询日志

三.演示超时sql以及查看慢日志

  -- 查询超大结果集
  SELECT * FROM b LIMIT 1000000

  执行信息如下图所示:

   mysql 开发进阶篇系列 41 mysql日志之慢查询日志

  下面搜索日志中含有select 关键词的慢查询语句:
    mysql 开发进阶篇系列 41 mysql日志之慢查询日志
  下面搜索日志中含有CALL关键词的存储过程的慢查询语句:
    mysql 开发进阶篇系列 41 mysql日志之慢查询日志

  -- 查询有多少条慢查询记录,可以使用系统变量。下面统计了慢查询共10次。
  SHOW GLOBAL STATUS LIKE '%slow_queries%';

    mysql 开发进阶篇系列 41 mysql日志之慢查询日志

四. 日志分析工具mysqldumpslow

  当慢日志文件内容超大时,需要对慢查询进行分类汇总,可以使用mysqldumpslow工具。对于sql文本一致的,会视为同一个语句自动统计,如下面统计CALL调用9次。对于sql文本一致使用参数的,参数变更值使用N来代替。如下图所示:
    mysql 开发进阶篇系列 41 mysql日志之慢查询日志

五. 在线清除慢日志内容

FLUSH LOGS;
-- 在线关闭慢日志
SET GLOBAL slow_query_log=0;
-- 删除日志 rm

    mysql 开发进阶篇系列 41 mysql日志之慢查询日志

--  在线开启慢日志
SET GLOBAL slow_query_log=1;

    删除日志和开启慢日志后,会自动重新重成新的慢日志,新的内容如下图所示 :
    mysql 开发进阶篇系列 41 mysql日志之慢查询日志

六. 日志篇总结 

  在日志篇系列里讲到了最常用的4种日志类型:错误日志,二进制日志,查询日志,慢查询日志。 4种日志各有不同用途:
    (1) 系统故障时,建议首先查看错误日志。
    (2) 如果要记录数据的变更,数据备份,数据复制等操作时,二进制日志必须开启 (默认不开启)。
    (3) 如果希望记录数据库发生的任何操作,包括select,需要开启。一般情况不建议打开,影响系统性能(默认不开启)。
    (4) 如果要排查系统性能问题,想找到有性能的sql语句,慢日志则需要开启(默认不开启)。

mysql 开发进阶篇系列 41 mysql日志之慢查询日志的更多相关文章

  1. mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)

    1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间 ...

  2. mysql 开发进阶篇系列 38 mysql日志之错误日志log-error

    一.mysql日志概述 在mysql中,有4种不同的日志,分别是错误日志,二进制日志(binlog日志),查询日志,慢查询日志.这此日志记录着数据库在不同方面的踪迹(区别sql server里只有er ...

  3. mysql 开发进阶篇系列 40 mysql日志之二进制日志下以及查询日志

    一.binlog 二进制其它选项 在二进制日志记录了数据的变化过程,对于数据的完整性和安全性起着非常重要作用.在mysql中还提供了一些其它参数选项,来进行更小粒度的管理. 1.1 binlog-do ...

  4. mysql 开发进阶篇系列 19 MySQL Server(innodb_flush_log_at_trx_commit与sync_binlog)

    一. innodb_flush_log_at_trx_commit 这个参数名称有个log,一看就是与日志有关.是指:用来控制缓冲区(log buffer)中的数据写入到日志文件(log file), ...

  5. mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)

    一.概述 mysql 提供了很多参数来进行服务器的设置,当服务第一次启动的时候,所有启动参数值都是系统默认的.这些参数在很多生产环境下并不能满足实际的应用需求.在这个系列中涉及到了liunx 服务器, ...

  6. mysql 开发进阶篇系列 39 mysql日志之二进制日志(binlog)

    一.概述 二进制日志(binlog)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句, 语句以"事件"的形式保存,它描述了数据的更改过程, ...

  7. mysql 开发进阶篇系列 18 MySQL Server(innodb_buffer_pool_size)

    从这篇开始,讲innodb存储引擎中,对于几个重要的服务器参数配置.这些参数以innodb_xx 开头. 1. innodb_buffer_pool_size的设置 这个参数定义了innodb存储引擎 ...

  8. mysql 开发进阶篇系列 17 MySQL Server(key_buffer与table_cache)

    一.key_buffer 上一篇了解key_buffer设置,key_buffer_size指定了索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度.通过检查状态值Key_read_reque ...

  9. mysql 开发进阶篇系列 55 权限与安全(安全事项 )

    一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...

随机推荐

  1. 英雄联盟网络测速 v1.3 全服全区取延时+取服务器维护状态+机房地理位置

    全服全区取延时+取服务器维护状态+机房地理位置 v1.2修复了服务器状态获取不准确的bug 下载链接: https://pan.baidu.com/s/1c1LHIY8 

  2. TTL、RS232、RS485、串口

    Point: 1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号). 2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电 ...

  3. lvm之创建/扩容/缩容/快照及关闭的全部流程操作记录

    基本介绍Linux用户安装Linux 操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间.随着 Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解, l ...

  4. [转]IIS部署托管管道模式的集成和经典区别

    关于ESPS和SCSJ在Windows server 2008的问题总结 SCSJ出现的问题在于集成模式和经典模式的选择上,系统本身是没有问题的.我们在部署系统的时候,选择了集成模式,导致WebCon ...

  5. Java中字符流与字节流的区别

    字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单 ...

  6. Aspnet MVC 异步调用

    一个简图来描述下Aspnet MVC下的异步调用 { request } / \/ -------ISS------- > work thread | \ | \ route - aysn co ...

  7. 为什么要用Math.sqrt(i)方法

    java 练习题 判断 101-200 之间有多少个素数,并输出所有素数 public class Prime { public static int count = 0; public static ...

  8. C# 利用反射动态调用类成员

    用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): publicobject InvokeMember(    string name, ...

  9. 8个实用的SVG工具,20 个有用的 SVG 工具,五款超实用的开源SVG工具

    8个实用的SVG工具 [导读] 你还在为没有好用的SVG工具而发愁吗?开发人员的福音来啦!小编为大家收集罗列了8款实用的SVG工具,让我们一起来看看吧! SVG可缩放矢量图形(Scalable Vec ...

  10. osg + cuda

    #include <osg/Notify> #include <osgViewer/Viewer> #include <osgCompute/Memory> #in ...