mysql 开发进阶篇系列 41 mysql日志之慢查询日志
一.概述
慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间。慢日志默认写入到参数datadir(数据目录)指定的路径下。默认文件名是[hostname]_slow.log,默认超时是10秒,默认不开启慢查询日志。下面查看慢日志的几个参数:
-- 是否开启慢日志
SHOW VARIABLES LIKE 'slow_query_log';

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

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

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

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语句。

重启mysqld服务后,在次查询慢日志参数,如下所示:


三.演示超时sql以及查看慢日志
-- 查询超大结果集
SELECT * FROM b LIMIT 1000000
执行信息如下图所示:

下面搜索日志中含有select 关键词的慢查询语句:

下面搜索日志中含有CALL关键词的存储过程的慢查询语句:

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

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

五. 在线清除慢日志内容
FLUSH LOGS;
-- 在线关闭慢日志
SET GLOBAL slow_query_log=0;
-- 删除日志 rm

-- 在线开启慢日志
SET GLOBAL slow_query_log=1;
删除日志和开启慢日志后,会自动重新重成新的慢日志,新的内容如下图所示 :

六. 日志篇总结
在日志篇系列里讲到了最常用的4种日志类型:错误日志,二进制日志,查询日志,慢查询日志。 4种日志各有不同用途:
(1) 系统故障时,建议首先查看错误日志。
(2) 如果要记录数据的变更,数据备份,数据复制等操作时,二进制日志必须开启 (默认不开启)。
(3) 如果希望记录数据库发生的任何操作,包括select,需要开启。一般情况不建议打开,影响系统性能(默认不开启)。
(4) 如果要排查系统性能问题,想找到有性能的sql语句,慢日志则需要开启(默认不开启)。
mysql 开发进阶篇系列 41 mysql日志之慢查询日志的更多相关文章
- mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)
1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间 ...
- mysql 开发进阶篇系列 38 mysql日志之错误日志log-error
一.mysql日志概述 在mysql中,有4种不同的日志,分别是错误日志,二进制日志(binlog日志),查询日志,慢查询日志.这此日志记录着数据库在不同方面的踪迹(区别sql server里只有er ...
- mysql 开发进阶篇系列 40 mysql日志之二进制日志下以及查询日志
一.binlog 二进制其它选项 在二进制日志记录了数据的变化过程,对于数据的完整性和安全性起着非常重要作用.在mysql中还提供了一些其它参数选项,来进行更小粒度的管理. 1.1 binlog-do ...
- mysql 开发进阶篇系列 19 MySQL Server(innodb_flush_log_at_trx_commit与sync_binlog)
一. innodb_flush_log_at_trx_commit 这个参数名称有个log,一看就是与日志有关.是指:用来控制缓冲区(log buffer)中的数据写入到日志文件(log file), ...
- mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)
一.概述 mysql 提供了很多参数来进行服务器的设置,当服务第一次启动的时候,所有启动参数值都是系统默认的.这些参数在很多生产环境下并不能满足实际的应用需求.在这个系列中涉及到了liunx 服务器, ...
- mysql 开发进阶篇系列 39 mysql日志之二进制日志(binlog)
一.概述 二进制日志(binlog)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句, 语句以"事件"的形式保存,它描述了数据的更改过程, ...
- mysql 开发进阶篇系列 18 MySQL Server(innodb_buffer_pool_size)
从这篇开始,讲innodb存储引擎中,对于几个重要的服务器参数配置.这些参数以innodb_xx 开头. 1. innodb_buffer_pool_size的设置 这个参数定义了innodb存储引擎 ...
- mysql 开发进阶篇系列 17 MySQL Server(key_buffer与table_cache)
一.key_buffer 上一篇了解key_buffer设置,key_buffer_size指定了索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度.通过检查状态值Key_read_reque ...
- mysql 开发进阶篇系列 55 权限与安全(安全事项 )
一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...
随机推荐
- 【转载】一个小时学会MySQL数据库
一个小时学会MySQL数据库 目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库技术品牌.服务与架构 1.3.数 ...
- linux主机名设置
有时会报错: 代理抛出异常错误: java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostExcept ...
- 【转载】Sql Server参数化查询之where in和like实现详解
文章导读 拼SQL实现where in查询 使用CHARINDEX或like实现where in 参数化 使用exec动态执行SQl实现where in 参数化 为每一个参数生成一个参数实现where ...
- HTML5表单_form
原则:能让用户选择的决不填写,增加用户体验 表单(form)元素格式 <input type="text" name="fname" value=&quo ...
- mysql c-api 预处理语句
stmt = mysql_stmt_init(mysql) mysql_stmt_prepare(stmt, "SELECT ?", strlen("SELECT ?&q ...
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...
- oracle删除dbf导致的oracle工具不能正常使用
1.使用cmd命令登录Oracle:sqlplus / as sysdba;就可以,中间两个空格.2.删除了dbf导致Oracle工具不能正常使用解决办法(oracle initialization ...
- #10072. 「一本通 3.2 例 1」Sightseeing Trip(floyd求最小环+路径)
https://loj.ac/problem/10072 针对无向图 因为Floyd是按照结点的顺序更新最短路的,所以我们在更新最短路之前先找到一个连接点k,当前的点k肯定不存在于已存在的最短路f[i ...
- Linux学习--- 宏定义下#、##的使用
# 字符串化 ## 连接符号 eg: #include <stdio.h> #define ABC(x) #x #define DAY(c) myday##c int main (){ ...
- maven学习pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...