Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29419079
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Mysql/postgreSQL

2010-01-31 23:09:42

MySQL 慢查询专题

[整理人:hkebao@126.com 整理时间:2010-1-26]

一、打开慢查询日志

Windows下开启MySQL慢查询
MySQL
Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上
log-slow-queries=F:\MySQL\log\mysqlslowquery.log
long_query_time=2

Linux下启用MySQL慢查询
MySQL
Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上
log-slow-queries=/data/mysqldata/slowquery.log
long_query_time=2

注意
log-slow-queries = F:\MySQL\log\mysqlslowquery.log
为满查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;
long_query_time=2
中的2表示查询超过两秒才记录;

 

测试:

我修正我的MYSQL配置文件里面添加如下两行

[mysqld]

log-slow-queries=C:\Program Files\MySQL\MySQL Server 5.0\data\mysqlslowlog.log

long_query_time=1

重启服务,然后运行一个大查询语句

怎么我发现没有记录日志呢?

 

mysqldumpslow命令
/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log
这会输出记录次数最多的10SQL语句,其中:

  • -s, 是表示按照何种方式排序,ctlr分别是按照记录次数、时间、查询时间、返回的记录数来排序,acatalar,表示相应的倒叙;
  • -t, top n的意思,即为返回前面多少条的数据;
  • -g, 后边可以写一个正则匹配模式,大小写不敏感的;

比如
/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log
得到返回记录集最多的10个查询。
/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
得到按照时间排序的前10条里面含有左连接的查询语句。

小结
使用mysqldumpslow命令可以非常明确的得到各种我们需要的查询语句,对MySQL查询语句的监控、分析、优化是MySQL优化的第一步,也是非常重要的一步。

 

上网百度GOOGLE了一下发现这个工具是用第三方的脚本实现的。其MYSQL自带的是不存的。我上传这里面的脚本到我的附件地址:

http://blogimg.chinaunix.net/blog/upfile2/100207151618.zip

 

说明:

里面存放的是:mysqldumpslow等常用脚本,用于mysql和程序性能调优,解压后将scripts文件夹放入mysql根目录,安装perl环境之后即可使用。

 

 

 

 

 

 

 

 

阅读(853) | 评论(1) | 转发(0) |
0

上一篇:正则表达式专题

下一篇:mysql缓存参数

给主人留下些什么吧!~~

chinaunix网友2010-07-25 23:21:32

给自己定一个非常明确的目标:努力成为高级工程师优秀的程序员!