Genral log(普通日志)与 Slow log(慢速日式)
General log:
Geleral log记录了服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误,general log
都会将其记录下来 ,记录的格式为 {Time ,Id ,Command,Argument
}。也正因为mysql服务器需要不断地记录日志,开启General log会产生不小的系统开销。 因此,Mysql默认是把General
log关闭的。 我们可以通过修改Mysql全局变量来开启General log功能或是更改日志存放路径。
注意:mysql5.0
版本,如果要开启slow log、general log,需要重启,从MySQL5.1.6版开始,general query log和slow
query log开始支持写到文件或者数据库表两种方式,并且日志的开启,输出方式的修改,都可以在Global级别动态修改。
1、首先查看log_output,确认日志输出到文件还是数据库。
mysql> show variables like 'log_output';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| log_output | FILE |
+-------------------+-------+
1 row in set (0.00 sec)
通过以上结果可以发现,log_output的值为FILE,证明是输出到日志文件,如果为TABLE则输出到默认‘mysql’数据库中的相应日志表,该表的默认引擎为CSV。
2、接下来通过如下命令可以查看 mysql默认的 General log 配置。
mysql> show global variables like '%general%';
+------------------+---------------------------+
| Variable_name | Value |
+------------------+---------------------------+
| general_log | OFF |
| general_log_file | /var/lib/mysql/ubuntu.log |
+------------------+---------------------------+
2 rows in set (0.00 sec)
general_log的值为OFF,所以当前general_log是关闭的。general_log_file变量的值是日志文件的路径。
3、通过 set global general_log = on; 命令开启General log。
4、最后我们可以从/var/lib/mysql/ubuntu.log文件中查看相应日志信息。
Slow log:
General log日志内容比较简单,不包含执行时间或其他只有在查询结束之后才能得到的信息,相反,slow log 记录了这些内容。
1、我们首先来看一下与慢日志相关的全局变量。
mysql> show global variables like '%slow%';
+---------------------+--------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------+
| log_slow_queries | ON |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/ubuntu-slow.log |
+---------------------+--------------------------------+
4 rows in set (0.00 sec)
笔者的mysql已经开启了慢日志选项。变量slow_launch_time的值代表着捕获所有执行时间超过2秒的查询。slow log可以记录没有使用索引的查询,它也能记录执行速度比较慢的管理命令。
开启log_queries_not_using_indexes,将会记录没有使用索引的查询到slow日志里。
mysql> show global variables like '%not_using%';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF |
+-------------------------------+-------+
1 row in set (0.00 sec)
slow log 的日志格式为:
# Time: 111108 19:38:00
# User@Host: root[root] @ localhost []
# Query_time: 15.268541 Lock_time: 0.000237 Rows_sent: 1 Rows_examined: 102
use mytest;
SET timestamp=1320752280;
select count(a.b) from mytable a ,mytable b ,mytable c ,mytable d;
慢速日志的确提供了很多有用的信息,但是不代表出现的查询一定一直都是慢的。如果同样的查询在慢速日志里出现了多次,那么它的确需要优化,但是如果只是出现了偶尔一两次,则有可能是其他客观原因造成的,比如某些锁,I/O磁盘物理性问题,网络问题等等。
慢速日志的slow_launch_time的时间单位为秒,可以通过网上第三方补丁将其更改为毫秒级,用于更加精细的日志记录和分析,但是这需要重新编译mysql。
我们通常在日志中查找下面几个信息:长查询、影响比较大的查询和新查询。这可能需要我们自己写一下脚本或是借助某些第三方工具进行日志分析。
General log 系统开销比较大,一般不建议开启。
Genral log(普通日志)与 Slow log(慢速日式)的更多相关文章
- Mysq性能分析 —— Genral log(普通日志)与 Slow log(慢速日式)
对Mysql进行深入的分析对于发现mysql性能瓶颈和寻找优化策略是十分必要的. 我们可以从不同的粒度上对Mysql进行分析:可以整体分析服务器,或者检查单个查询或批查询.通过分析,我们得到的如下信息 ...
- MySQL慢查询日志(SLOW LOG)
慢查询日志可以帮助DBA或开发人员定位可能存在问题的SQL语句,从而进行优化. 如何开启 默认情况下,MySQL是不开启慢查询日志的.可以通过以下命令查看是否开启: mysql> SHOW VA ...
- shell脚本分析mysql慢查询日志(slow log)
使用percona公司的pt-query-digest分析慢查询日志.分析.统计的结果的比較清晰 #!/bin/sh slowlog_path=/root/slow_query_log everysl ...
- redis专题--slow log详解
SLOWLOG subcommand [argument] 什么是 SLOWLOG Slow log 是 Redis 用来记录查询执行时间的日志系统. 查询执行时间指的是不包括像客户端响应(talki ...
- 深入学习MySQL 02 日志系统:bin log,redo log,undo log
上一篇文章中,我们了解了一条查询语句的执行过程,按理说这篇应该讲一条更新语句的执行过程,但这个过程比较复杂,涉及到了好几个日志与事物,所以先梳理一下3个重要的日志,bin log(归档日志).redo ...
- MySQL日志系统bin log、redo log和undo log
MySQL日志系统bin log.redo log和undo log 今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...
- mysql之 slow log 慢查询日志
一. 相关参数: • slow_query_log ◦ 是否开启慢查询日志 • slow_query_log_file ◦ 慢查询日志文件名, 在 my.cnf 我们已经定义为slow.log,默认是 ...
- 【PHP】善用php-fpm的慢执行日志slow log,分析php性能问题
(转)善用php-fpm的慢执行日志slow log,分析php性能问题 众所周知,mysql有slow query log,根据慢查询日志,我们可以知道那些sql语句有性能问题.作为mysql的好 ...
- MySQL Slow Log慢日志分析【转】
如果你的MySQL出现了性能问题,第一个需要“诊断”的就是slow log(慢日志)了. slow log文件很小,使用more less等命令就足够了.如果slow log很大怎么办?这里介绍MyS ...
随机推荐
- Unable to load DLL 'opencv_core290'
问题: In my winforms application I need to use some Emgu.CV libraries (I have installed Emgu 2.9). Pro ...
- linux中的dup()系统调用
参考1:http://www.blogjava.net/lihao336/archive/2011/12/13/366231.html 在linux纷繁复杂的内核代码中,sys_dup()的代码也许称 ...
- zookeeper集群,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。
zookeeper集群,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的.
- Starling 2D框架简介(一)
本系列是对Introducing Starling pdf的翻译,下文是对adobe开发人员中心的一片日志的转载,地址为http://www.adobe.com/cn/devnet/flashplay ...
- Android之MVC模式
MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器.一个逻辑模型可以对于多种视图模型,比如一批统计数据 你可以分别用柱状图.饼图来表示.一种视图模型也 ...
- Nginx集群
转自:http://hi.baidu.com/xingyuanju/blog/item/779a2a23b7ebb749935807f1.html http://hi.baidu.com/dianhu ...
- 仿LOL项目开发第二天
仿LOL项目开发第二天 by草帽 接着上节来讲,上节更新还没开始写代码逻辑,今天我们补充完整. 我们找到VersionManager脚本里面的CheckVersion方法: 首先我们想到检测版本,需要 ...
- Python的__getattribute__ vs __getattr__的妙用
这里的属性即包括属性变量,也包括属性方法.即类的变量和方法. 当访问某个实例属性时, getattribute会被无条件调用,如未实现自己的getattr方法,会抛出AttributeError提示找 ...
- JAVA反射使用手记
本篇文章为在工作中使用JAVA反射的经验总结,也可以说是一些小技巧,以后学会新的小技巧,会不断更新.本文不准备讨论JAVA反射的机制,网上有很多,大家随便google一下就可以了. 在开始之前,我先定 ...
- Android开发者指南(9) —— ProGuard
转: 前言 本章内容为开发者指南(Dev Guide)/Developing/Tools/ProGuard,本章内容为"混淆器",版本为Android3.0 r1,翻译来自:&qu ...