- 浏览: 253137 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
wls212:
...
数据库查询优化技巧(MySQL) -
wang1352083:
来看几个实例 1、客户/订单/订单项目 ...
MongoDB Schema Design(MongoDB模式设计)(中文简述版) -
RunUpwind:
感谢,对我很有帮助!
ruby install相关(远程安装时出现HTTP Response 302的解决办法) -
yinmang1215:
不错,感觉这些方面的文档真是稀缺,谢了。
MongoDB+Rails的Demo实现 -
fireflyman:
rake -T
Rake命令大全
【Backgroud】
在以MySQL为数据库的应用系统中,可以让MySQL记录下超过指定时间的SQL语句,这些SQL语句查询称为“慢查询”。开发者在掌握了这些慢查询的SQL语句后,可以根据自己的需求进行优化,从而提高整个系统的性能。
【Proposal】
(1)mysql自带的慢查询分析工具mysqldumpslow
①设置慢查询的指定时间
mysql> show variables like 'long%';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 0.500000 |
+-----------------+----------+
1 row in set (0.02 sec)
由上面的查询结果可知,当前long_query_time=0.5。也就是受执行时间超过0.5秒的都算慢查询。
如果根据需求,应该设置执行时间超过1秒的才算慢查询,那么应该执行下面的设置:
mysql> set long_query_time = 1;
②开启慢查询功能
mysql> show variables like 'slow_query%';
+---------------------+------------------------------+
| Variable_name | Value |
+---------------------+------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/rdb4-slow.log |
+---------------------+------------------------------+
2 rows in set (0.01 sec)
设置参数slow_query_log的值为ON时,开启MySQL的慢查询分析记录功能;
参数slow_query_log_file的值是慢查询日志存放路径;
#在MySQL的配置文件/etc/my.cnf中也可以同样可以设置参数long_query_time和slow_query_log_file的值。
这种配置方法和前面提到的在mysql客户端中设置的不同点是,通过/etc/my.cnf来配置时,这种有效性是永久的;而通过mysql客户端设置时,是即时性的;
③执行慢查询日志分析
具体举例如下:
找出应用程序中使用次数最多的前两个慢查询SQL语句。
[root@rdb4 db]# mysqldumpslow -s c -t 2 /var/lib/mysql/rdb4-slow.log
Reading mysql slow query log from /var/lib/mysql/rdb4-slow.log
Count: 28 Time=1.62s (45s) Lock=0.00s (0s) Rows=1.0 (28), root[root]@rap1
SELECT * FROM contents WHERE id = N
Count: 13 Time=0.83s (10s) Lock=0.02s (0s) Rows=1.0 (13), root[root]@2hosts
SELECT * FROM `accounts` WHERE (identity_url='S' and status!='S' and status!='S') LIMIT N
常用的几个参数大概意思如下:
-s,是order的顺序。
还有c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时表示倒叙。
-t,是top n的意思,即为返回前面多少条的数据。
-g,后边可以写一个正则匹配模式,大小写不敏感的。
再举几个例子:
mysqldumpslow -s c -t 20 /var/lib/mysql/rdb4-slow.log
mysqldumpslow -s r -t 20 /var/lib/mysql/rdb4-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。
#还有很多参数的应用,具体可以参考mysqldumpslow -help
(2)其他几款常用的慢查询分析工具介绍
①mysqlsla
hackmysql.com推出的一款日志分析工具(该网站还维护了 mysqlreport, mysqlidxchk 等比较实用的mysql工具)
a)下载地址:http://hackmysql.com/mysqlsla
b)linux安装方法:
tar xzvf mysqlsla-2.03.tar.gz
perl Makefile.PL
make
make install
c)简介
整体来说, 功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等.
格式说明如下:
总查询次数 (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语句
除了以上的输出, 官方还提供了很多定制化参数, 是一款不可多得的好工具。
②mysql-explain-slow-log, 德国人写的一个perl脚本。
http://www.willamowius.de/mysql-tools.html
功能上有点瑕疵, 不仅把所有的 slow log 打印到屏幕上, 而且统计也只有数量而已。 不推荐使用。
③mysql-log-filter, google code上找到的一个分析工具.提供了 python 和 php 两种可执行的脚本。
http://code.google.com/p/mysql-log-filter/
能上比官方的mysqldumpslow, 多了查询时间的统计信息(平均,最大, 累计), 其他功能都与 mysqldumpslow类似。
特色功能除了统计信息外, 还针对输出内容做了排版和格式化, 保证整体输出的简洁. 喜欢简洁报表的朋友, 推荐使用一下。
④myprofi, 纯php写的一个开源分析工具.项目在 sourceforge 上。
http://myprofi.sourceforge.net/
功能上, 列出了总的慢查询次数和类型, 去重后的sql语句, 执行次数及其占总的slow log数量的百分比.
从整体输出样式来看, 比mysql-log-filter还要简洁. 省去了很多不必要的内容. 对于只想看sql语句及执行次数的用户来说, 比较推荐。
(3)以上几款慢查询分析工具比较
总结
工具/功能 一般统计信息 高级统计信息 脚本 优势
mysqldumpslow (推荐) 支持 不支持 perl mysql官方自带
mysqlsla (推荐) 支持 支持 perl 功能强大,数据报表齐全,定制化能力强.
mysql-explain-slow-log 支持 不支持 perl 无
mysql-log-filter 支持 部分支持 python or php 不失功能的前提下,保持输出简洁
myprofi 支持 不支持 php 非常精简
发表评论
-
mysql proxy V0.8.2 测试问题记录
2012-03-08 15:40 19171、 问题:没法输出控制台日志。(控制台日志可以统计分 ... -
mysql用户管理
2012-02-27 16:30 1398网络转载:http://www.cnblogs.com/blo ... -
数据库查询优化技巧(MySQL)
2011-12-19 13:42 1715在数据库程序的开发中,性能是最让人关心和担心的问题之一, ... -
mysql服务器性能调优工具
2011-12-19 12:10 1925数据库服务器的性能在网络服务中往往起着至关重要的作用,通常 ... -
mysql主从服务器搭建配置
2011-12-19 12:07 1738主服务器的(db1)配置 ●my.cnf设置 [mysql ... -
mysql中如何获得数据库的大小
2011-07-15 13:33 2476转载:http://zhidao.zgsj.com/artic ... -
mysql中常用命令收集
2011-04-22 17:13 1143①查看表中各列的具体属性: show full col ... -
MySQL中查看表状态
2011-02-18 17:19 2641#MySQL中查看表状态 SHOW TABLE STATUS ... -
MySQL-Proxy负载平衡测试遇到的问题及其分析 && MySQL-Proxy工作机制
2010-12-23 16:19 4269(1)MySQL-Proxy负载平衡测试中遇到的问题及其分析 ... -
mysql中查看该台数据库服务器执行的查询次数
2010-11-26 17:26 2071mysql> show status like & ... -
mysql中GROUP BY的高级应用
2010-10-18 19:53 2002有SQL文如下所示: SELECT place_id, con ... -
mysql中GROUP BY结合GROUP_CONCAT的使用
2010-10-18 18:59 1656有查询语句如下所示: select id, type, si ... -
MySQL Proxy Version 0.8.0安装手顺
2010-09-08 15:56 3185MySQL Proxy Version 0.8.0安装 ... -
MySql查看数据库和表的创建语句
2010-07-27 16:59 19970博文参照:http://zhuixue.iteye.c ... -
查看mysql服务器的端口
2010-07-21 17:13 3350##########查看mysql服务器的端口####### ... -
MySQL Sandbox的安装
2010-07-13 17:37 1798安装MySQLSandbox 下载地址:https://la ... -
利用MySQL Sandbox同一台机器上创建多个MySQL服务器
2010-07-13 17:33 2742创第一个MySQL服务器---sp ... -
USING SPIDER (Simple case)
2010-07-12 17:28 1568利用spider storage engine的简单实 ... -
spider storage engine实践时遇到[Mysql::Error: This xid is already exist: COMMIT]的解决办法
2010-07-07 17:16 2085参考博文:http://ilgnep.iteye.com/bl ... -
[MySQL Error number:1030]解决办法
2010-07-07 17:03 5631参考博文:http://www.webjx.com/dat ...
相关推荐
通过合理配置和使用MySQL慢查询日志及其相关的分析工具,可以有效地定位和解决数据库性能问题,提高系统的整体性能和稳定性。需要注意的是,在生产环境中使用慢查询日志时,应根据实际情况适度调整相关参数,避免因...
MySQL的慢查询日志是数据库...总的来说,Anemometer作为MySQL慢查询工具,提供了一种有效监控和诊断数据库性能的方式。通过深入理解和充分利用这个工具,数据库管理员能够及时发现并解决性能问题,提升系统的整体效率。
MySQL慢查询日志是一种重要的工具,用于记录执行时间超过预设阈值的SQL语句。通过对这些记录进行分析,可以找出数据库中的性能瓶颈,并据此采取相应的优化措施。 #### 二、慢查询日志的作用 1. **性能调优**:帮助...
本文将详细介绍多种MySQL性能调优工具及其应用场景,帮助读者快速上手。 #### 一、MySQL AWR 报告及基本调优工具 1. **mysqlawr报告**:类似于Oracle的AWR(Automatic Workload Repository)报告,mysqlawr提供了...
### MySQL慢查询日志的作用与使用详解 #### 一、慢查询日志概述 在MySQL数据库管理中,慢查询日志是一项重要的诊断工具,它能够帮助数据库管理员和开发者识别并解决那些执行时间过长的SQL语句所带来的性能问题。...
- 开启慢查询日志的方法有两种:一种是在MySQL配置文件`my.cnf`或`my.ini`中添加相关参数;另一种是通过命令行动态设置。 配置示例: ```ini [mysqld] log-slow-queries = /data/mysqldata/slow-query.log ...
描述:本文对五款常用的MySQL慢查询日志分析工具进行深入解析,旨在帮助DBA、开发者和运维人员更有效地定位和优化数据库性能瓶颈。 ### MySQL Slow Log概念 MySQL慢查询日志(Slow Query Log)是一种用于记录执行...
2. Percona Toolkit:一套用于MySQL性能优化和维护的命令行工具,包括pt-query-digest用于分析慢查询日志,pt-online-schema-change用于在线修改表结构等。 3. MySQLTuner:一个Perl脚本,用于检查MySQL服务器的...
本文将详细介绍几种常用的MySQL性能分析工具及其使用方法,帮助读者更好地理解和掌握MySQL的性能优化技巧。 #### MySQL性能分析概述 MySQL提供了多种工具来帮助用户分析和优化其性能,主要包括慢查询日志、`...
本篇文章将详细介绍Percona Toolkit中的主要工具及其使用方法,帮助读者更好地理解和应用这些工具。 #### 工具分类 Percona Toolkit包含的工具大致可以分为以下几类:开发、性能、配置、监控、复制、系统以及实用...
### MySQL介绍与性能优化 #### MySQL基本介绍 MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典的MySQL AB公司开发。自1995年第一个公开版本发布以来,MySQL因其小巧、高效、成本低廉以及开放源代码的特性...
通过合理使用MySQL提供的多种日志文件及其分析工具,可以有效提升数据库系统的稳定性和性能。无论是日常运维还是问题排查,这些工具都是不可或缺的好帮手。希望本文能够帮助读者更好地理解和运用MySQL日志文件。
MySQL的慢查询功能是数据库性能调优的重要工具,它能够帮助数据库管理员识别并解决执行效率低下的SQL语句,从而提升整个系统的响应速度和资源利用效率。以下将详细阐述慢查询的相关知识点及其开启方法。 **1. 慢...
工具内置的SQL分析器可以追踪和评估SQL查询的性能,找出慢查询,帮助优化SQL语句,提高查询效率。这对于处理大量数据的系统尤其重要。 5. **性能优化建议**: MONyog不仅提供数据,还根据监控结果给出优化建议,...
以下是如何开启MySQL慢查询日志记录及其相关的知识点: 1. **开启慢查询日志**: 要启用慢查询日志,你需要编辑MySQL的配置文件。在Windows系统中,这个文件通常是`my.ini`,而在Linux系统中则是`my.cnf`。在 `...