Mysql慢查询设置

分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。

=========================================================

方法一: 这个方法我正在用,呵呵,比较喜欢这种即时性的。

Mysql5.0以上的版本可以支持将执行比较慢的SQL语句记录下来。

mysql> show variables like 'long%';     注:这个long_query_time是用来定义慢于多少秒的才算“慢查询”

+-----------------+-----------+

| Variable_name   | Value     |

+-----------------+-----------+

| long_query_time | 10.000000 |

+-----------------+-----------+

1 row in set (0.00 sec)

mysql> set long_query_time=1;   注: 我设置了1, 也就是执行时间超过1秒的都算慢查询。

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'slow%';

+---------------------+---------------+

| Variable_name       | Value         |

+---------------------+---------------+

| slow_launch_time    | 2             |

| slow_query_log      | ON            |           注:是否打开日志记录

| slow_query_log_file | /tmp/slow.log |      注: 设置到什么位置

+---------------------+---------------+

3 rows in set (0.00 sec)

mysql> set global slow_query_log='ON'   注:打开日志记录

一旦slow_query_log变量被设置为ON,mysql会立即开始记录。

/etc/my.cnf   里面可以设置上面MYSQL全局变量的初始值。

long_query_time=1

slow_query_log_file=/tmp/slow.log

====================================================

方法二:mysqldumpslow命令

/path/mysqldumpslow -s c -t 10 /tmp/slow-log

这会输出记录次数最多的10条SQL语句,其中:

-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;

-t, 是top n的意思,即为返回前面多少条的数据;

-g, 后边可以写一个正则匹配模式,大小写不敏感的;

比如

/path/mysqldumpslow -s r -t 10 /tmp/slow-log

得到返回记录集最多的10个查询。

/path/mysqldumpslow -s t -t 10 -g “left join” /tmp/slow-log

得到按照时间排序的前10条里面含有左连接的查询语句。

=====================================================

1,配置开启

Linux:

在mysql配置文件my.cnf中增加

log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)

long_query_time=2 (记录超过的时间,默认为10s)

log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)

log-long-format (如果设置了,所有没有使用索引的查询也将被记录)

Windows:

在my.ini的[mysqld]添加如下语句:

log-slow-queries = E:\web\mysql\log\mysqlslowquery.log

long_query_time = 2(其他参数如上)

2,查看方式

Linux:

使用mysql自带命令mysqldumpslow查看

常用命令

-s ORDER what to sort by (t, at, l, al, r, ar etc), 'at’ is default

-t NUM just show the top n queries

-g PATTERN grep: only consider stmts that include this string

eg:

s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序 -t,是top n的意思,即为返回前面多少条的数据 -g,后边可以写一个正则匹配模式,大小写不敏感的

mysqldumpslow -s c -t 20 host-slow.log

mysqldumpslow -s r -t 20 host-slow.log

上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。

mysqldumpslow -t 10 -s t -g “left join” host-slow.log这个是按照时间返回前10条里面含有左连接的sql语句。

mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢?

其实打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加上如下代码:

log-slow-queries=/var/lib/mysql/slowquery.log

long_query_time=2

注:

log-slow-queries 设置把日志写在那里,为空的时候,系统会给慢查询日志赋予主机名,并被附加slow.log. /var/lib/mysql/slowquery.log为日志存放的文件的位置,一般这个目录要有mysql的运行帐号的可写权限,一般都将这个目录设置为mysql的数据存放目录

long_query_time=2中的2表示查询超过两秒才记录.

如果设置了参数log-long-format,那么所有没有使用索引的查询也将被记录。在文件my.cnf或my.ini中加入下面这一行可以记录这些查询

这是一个有用的日志。它对于性能的影响不大(假设所有查询都很快),并且强调了那些最需要注意的查询(丢失了索引或索引没有得到最佳应用)

# Time: 070927 8:08:52

# User@Host: root[root] @ [192.168.0.20]

# Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630

select id, name from manager where id in (66,10135);

这是慢查询日志中的一条,用了372秒,锁了136秒,返回152行,一共查了263630行

如果日志内容很多,用眼睛一条一条去看会累死,mysql自带了分析的工具,使用方法如下:

命令行下,进入mysql/bin目录,输入mysqldumpslow –help或--help可以看到这个工具的参数,主要有

Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]

Parse and summarize the MySQL slow query log. Options are

--verbose    verbose

--debug      debug

--help       write this text to standard output

-v           verbose

-d           debug

-s ORDER     what to sort by (t, at, l, al, r, ar etc), 'at' is default

-r           reverse the sort order (largest last instead of first)

-t NUM       just show the top n queries

-a           don't abstract all numbers to N and strings to 'S'

-n NUM       abstract numbers with at least n digits within names

-g PATTERN   grep: only consider stmts that include this string

-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),

default is '*', i.e. match all

-i NAME      name of server instance (if using mysql.server startup scrīpt)

-l           don't subtract lock time from total time

-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有

c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙

-t,是top n的意思,即为返回前面多少条的数据

-g,后边可以写一个正则匹配模式,大小写不敏感的

mysqldumpslow -s c -t 20 host-slow.log

mysqldumpslow -s r -t 20 host-slow.log

上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。

mysqldumpslow -t 10 -s t -g “left join” host-slow.log

这个是按照时间返回前10条里面含有左连接的sql语句。

Windows:

当你是第一次开启mysql的慢查询,会在你指定的目录下创建这个记录文件,本文就是mysqlslowquery.log,这个文件的内容大致如下(第一次开启MYSQL慢查询的情况下)

E:\web\mysql\bin\mysqld, Version: 5.4.3-beta-community-log (MySQL Community Server (GPL)). started with:

TCP Port: 3306, Named Pipe: (null)

Time Id Command Argument

可以通过如下的命令来查看慢查询的记录数:

mysql> show global status like ‘%slow%’;

+———————+——-+

| Variable_name | Value |

+———————+——-+

| Slow_launch_threads | 0 |

| Slow_queries | 0 |

+———————+——-+

mysql 慢查询时间设置_Mysql 慢查询设置相关推荐

  1. [技术]mysql 慢查询时间设置_Mysql 慢查询设置

    -- 查询是否设置慢查询 show variables like 'slow_query%'; -- 慢查询时间  -- show variables like 'long_query_time'; ...

  2. 2021陇南高考成绩查询,2021年陇南中考成绩公布查询时间 陇南中考成绩查询方式入口...

    2018年陇南中考成绩公布查询时间 陇南中考成绩查询方式入口 2018年陇南高考结束了,可是陇南中考又来了!6月注定是一个不平淡的月份.又一大批孩子朝着青春出发踏着坚定的脚步,行走在如火的六月.宁静的 ...

  3. 2021上饶市高考中考成绩查询,2021年上饶中考成绩公布查询时间 上饶中考成绩查询方式入口...

    2018年上饶中考成绩公布查询时间 上饶中考成绩查询方式入口 2018年上饶高考结束了,可是上饶中考又来了!6月注定是一个不平淡的月份.又一大批孩子朝着青春出发踏着坚定的脚步,行走在如火的六月.宁静的 ...

  4. 2021高考成绩查询衢州,2021浙江衢州中考成绩查询时间 衢州中考成绩查询入口

    2021浙江衢州中考成绩查询时间,考试季来临,高考的舞台已落下帷幕,接下来就是中考该粉墨登场了.那么,同学和家长最关心的应该就是中考成绩查询时间了,今天,小编整理了衢州中考成绩查询入口,下面就和小编一 ...

  5. 鄂汇办2021高考成绩查询,2021湖北高考成绩查询时间 湖北高考成绩查询方式

    2021年湖北高考成绩查询时间,随着高考的结束,高考成绩的发布时间就成为了广大考生和家长所关注的问题,以下是小编整理的湖北高考成绩查询方式相关信息,希望对大家有所帮助!下面就和小编一起来看看吧. ww ...

  6. 宜春高考2021年成绩查询,2021年宜春中考成绩公布查询时间 宜春中考成绩查询方式入口...

    2018年宜春中考成绩公布查询时间宜春中考成绩查询方式入口 2018年宜春高考结束了,可是宜春中考又来了!6月注定是一个不平淡的月份.又一大批孩子朝着青春出发踏着坚定的脚步,行走在如火的六月.宁静的清 ...

  7. 2021高考绥化成绩查询,2021年绥化中考成绩公布查询时间 绥化中考成绩查询方式入口...

    2018年绥化中考成绩公布查询时间 绥化中考成绩查询方式入口 2018年绥化高考结束了,可是绥化中考又来了!6月注定是一个不平淡的月份.又一大批孩子朝着青春出发踏着坚定的脚步,行走在如火的六月.宁静的 ...

  8. 2021高考金华八中的成绩查询,2021年浙江金华中考成绩查询时间 金华中考成绩查询入口...

    2021年浙江金华中考成绩查询时间,高考已经结束,中考的号角即将吹响,大家知道浙江金华中考成绩如何查询,何时查询吗?今天,小编整理了金华中考成绩查询入口希望对同学们有所帮助,祝大家中考取得优异成绩!下 ...

  9. mysql查询数据库日期_mysql如何查询日期与时间

    前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型 ...

最新文章

  1. 关于如何解决解决The SDK platform-tools version ((25.0.3)) is too old to check APIs compiled with API 26...
  2. vim 语法高亮显示
  3. CStopwatch详细用法
  4. 机器人视觉——图像读入、显示与保存
  5. android音频开发6,Android 音视频开发(一) : 通过三种方式绘制图片
  6. VC操作XML编程实例
  7. SAP 与 JSON 接口实施案例一
  8. CentOS7.2最小化安装后系统优化
  9. db2 之 入门实验
  10. 计算机网络是如何通信的【二】
  11. 从 wiscKey 看 LSMtree 的不足
  12. .net 窗体清除上次显示的内容_access在系统右下角任务栏弹出消息提示窗体
  13. 【Ubuntu-Opencv】Ubuntu14.04 Opencv3.3.0 使用中出现OpenCV Error: Unspecified error
  14. 【树形DP】 HDU 2196 Computer
  15. Django Rest Framework(一)
  16. php 邮件发送验证码,发送验证码邮件有什么好的解决方案?
  17. spring定时器,定时器一次执行两次的问题
  18. 交换机中查找IP与mac对应关系命令
  19. EZchip花1.3亿美元买Tilera然后以8亿美元把自己与Tilera一起卖掉
  20. 民营股份制企业是什么意思

热门文章

  1. 网站标题该如何进行SEO优化?
  2. 在Vue中获取DOM元素的实际宽高
  3. 比较器和放大器的区别
  4. Linux 磁盘扩容
  5. puzzle(1521)纪念碑谷
  6. 2019年1月8日LTC行情分析策略及操作建议(第二期附图)
  7. .NET应用跨域问题解决方案
  8. 四十七、Netty零拷贝
  9. shell编程学习心得
  10. 用Python做一个控制台程序实现图书管理器的简单功能,例如添加图书、查询库里的图书、删除图书、修改书籍信息、显示书籍信息,或者是借阅/归还...