为什么80%的码农都做不了架构师?>>>   

1,配置开启
在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 (如果设置了,所有没有使用索引的查询也将被记录)
2,查看方式
使用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语句。
mysqlsla分析mysql慢查询日志
? Slow log: mysqlsla -lt slow slow.log
? General log: mysqlsla -lt general general.log
? Binary log: mysqlbinlog bin.log | mysqlsla -lt binary
mysqlsla是第三方提供的perl脚本,不过它功能更强悍,可以分析包括慢查询在内的多种格式的日志,同时没有上面所说的mysqldumpslow的缺点。
tar zxf http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
cd mysqlsla-2.03
perl Makefile.PL
make
make install
mysqlsla会自动判断日志类型,缺省会打印出前十条结果,可以通过类似“--top 100”的参数来修改,如果觉得每次输入麻烦,还可以建立一个配置文件“~/.mysqlsla”,在文件里写上:top=100,这样就不用每次都手动输入参数了。
还有很多其他的工具,不过我感觉只要会用这两个就足够了,mysqldumpslow相对通用,mysqlsla相对强大,剩下其他的杂七杂八的工具不看也罢。
慢查询分析是个长期工作,即便系统长时间没有引入新的SQL查询,也可能由于不断更新数据使得数据分布特征发生变化,从而导致索引失效,进而产生慢查询。所以说平时要多留神,有了上面介绍的利器,工作会清闲很多。
mysqlsla -lt slow /tmp/slowquery.log
整体来说, 功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等.
格式说明如下:
总查询次数 (queries total), 去重后的sql数量 (unique)
输出报表的内容排序(sorted by)
最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.
Count, sql的执行次数及占总的slow log数量的百分比.
Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.
95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.
Lock Time, 等待锁的时间.
95% of Lock , 95%的慢sql等待锁时间.
Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.
Rows examined, 扫描的行数量.
Database, 属于哪个数据库
Users, 哪个用户,IP, 占到所有用户执行的sql百分比
Query abstract, 抽象后的sql语句
Query sample, sql语句
除了以上的输出, 官方还提供了很多定制化参数,具体可以到这查看: http://hackmysql.com/mysqlsla_documentation

http://blog.chinaunix.net/u1/37416/showart_2124827.html

转载于:https://my.oschina.net/sunjun/blog/9028

mysql开启查看慢查询日志[转]相关推荐

  1. MySQL慢查询 - 查看慢查询日志

    在MySQL 中,慢查询日志主要用来记录响应时间超过阈值的SQL. 响应时间超过 long_query_time(默认值为 10秒),会被记录到慢查询日志中,日志可以设置为文件或者数据库表. 在命令行 ...

  2. mysql 性能查看_MySQL查询性能问题排查

    Mysql数据库的性能问题排查是十分复杂的,具体方法视场景而定,这里只做大致思路分析. 1. 整体考虑导致查询性能低下的各种因素 导致SQL查询变慢的原因是多元化的,在遇到问题时首先要有一个全方位的思 ...

  3. Mysql查看慢查询日志

    我们在工作中经常会遇到执行很慢的sql语句,今天我们来看一下慢查询日志 查看通用日志 show variables like '%general%'; 默认通用日志是关闭的, 开启通用日志查询: se ...

  4. Mysql(三) Mysq慢查询日志

    Mysql Slow Query Log MYSQL慢查询日志是用来记录执行时间超过指定时间的查询语句.通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化.一般建议开启,它对服务器性能 ...

  5. mysql 开启记录慢查询记录

    以下操作,基于 mysql 5.5.31 版本源码安装配置. 修改 /etc/my.cnf 中 [mysqld] 中添加如下行 # 5.3 一下的配置 log-slow-queries=/var/lo ...

  6. mysql 慢日志 作用_MySQL慢查询日志的作用和开启

    前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...

  7. mysql开启慢查询日志

    应用背景: MySQL慢查询日志功能默认是关闭的,通过开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,再通过分析定位问题瓶颈,优化查询提高数据库系统的性能. 测试环境: centos7. ...

  8. MySQL慢查询日志的配置与使用_MySQL 慢查询日志的开启与配置

    简介 MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能. 查看是否开启慢查询功能: mysql> show variables like 'slow_ ...

  9. mysql 慢查询日志的作用_MySQL慢查询日志的作用和开启

    前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...

最新文章

  1. 一文弄懂神经网络中的反向传播法——BackPropagation
  2. ViewPager中Fragment的生命周期和FragmentPageAdapter与FragmentStatePageAdapter对其的影响
  3. ssh跳板登陆太麻烦,使用expect每次自动登录 利用expect 模拟键盘动作,在闲置时间之内模拟地给个键盘响应...
  4. 004_SpringMVC分层配置文件
  5. 用WinEdt打开.tex文件显示error reading错误
  6. hdu 1540(线段树单点更新 区间合并)
  7. html js css如何关联_会html+css+js就能把前端项目发布到多个平台
  8. RabbiMQ基础以及spring-boot-starter-amqp使用
  9. 苹果留给 iOS 开发者的时间不多了:30 天内必须更新旧版本
  10. jQuery Mobile中文本输入域input、textarea的data-*选项
  11. AcWing 1270. 数列区间最大值(RMQ问题)
  12. maven 阿里云仓库
  13. Spring Boot 中使用WebJars引入javasript依赖
  14. oracle恢复init文件,详解NBU异机恢复ORACLE数据库
  15. orcadcapture安装_OrCAD下载
  16. 计算机驱动安装的几个方法,显卡驱动怎么安装 三种方法教程
  17. 工作效率的提升——如何高效沟通,有效降低沟通成本
  18. AVR单片机ATMEGA16编译软件ICCAVR的使用技巧与应用示例
  19. javascriptji c z s
  20. 手动删除eureka多余服务

热门文章

  1. 打破技术型思维:产品经理的门槛在门里面
  2. 我在神策做研发 | 码农变身“建筑师”:安逸中离走,责任中成长
  3. 【干货下载】大数据分析——如何消除金融不确定性
  4. 没有思路?一个数据案例,拯救你的产品优化切入点
  5. SpringBoot中的Quartz应用
  6. PHP基础系列之正则表达式(一)
  7. python处理 ctrl+c
  8. convex function
  9. 在食堂吃饭是最好的解
  10. 哥大计算机工程申请入口和登陆入口