Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5359529
  • 博文数量: 1144
  • 博客积分: 11974
  • 博客等级: 上将
  • 技术积分: 12312
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-13 20:06
文章存档

2017年(2)

2016年(14)

2015年(10)

2014年(28)

2013年(23)

2012年(29)

2011年(53)

2010年(86)

2009年(83)

2008年(43)

2007年(153)

2006年(575)

2005年(45)

分类: LINUX

2006-09-28 08:24:27

看到很多朋友问MySQL的性能分析器

因为MySQL在这方面做得比较差,也可能我不知道

没有MicrosoftSQL Profiler,也没有OracleAuditAWR

所以我们很难得到一些SQL语句的统计,这也给我们调优带来了困难

更难的是对MySQL的追踪

以前写过个,不过在看过mysql网站上的一个bash脚本后,觉得自己的那个就是小巫见大巫了

现拿来分享给大家,很简单

# 取得网卡eth0上的所有操作

time tcpdump -i eth0 -s 1500 -w 20060427-db-traffic-01.dmp 

# 这个可以指定特定IP请求的操作,可用于追踪

time tcpdump -i eth0 -s 1500 src host 192.168.2.10 -w 20060427-db-traffic-01.dmp 

# 这个是格式化输出你要结果

strings 20060427-db-traffic-01.dmp | grep -i 'select' | awk '{printf("%s %s %s %s\n", $1,$2,$3, $4);}'| sort| uniq -c | awk '{printf("%06ld %s %s %s %s\n", $1,$2,$3,$4,$5);}'|sort

 

得到的结果:

cpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes

12000 packets captured

12000 packets received by filter

0 packets dropped by kernel

real 0m8.666s

user 0m0.006s

sys 0m0.016s

--------

000001 select last_insert_id() from system_parameter

...

000122 select count(1) from visit_tracking

000122 select visitor_id

000800 select web_page_id , web_page_type_id

000800 select web_page_type_id , name

003200 select count(1) from hit_count

006400 select pd.parameter_value,

006400 select rp.user_id , rp.update_time 

 

可以看到执行各种select的次数,当然改一下就可以看insert,update这种操作次数

配合log-slow-queries,你可以进一步的优化

 

 

 

--------------------------------------------------------------------------------

 oncity 回复于:2006-09-27 10:42:36

 

呵,利害。如果能有每条SQL 的执行时间报告就更好。。。

 

 

--------------------------------------------------------------------------------

阅读(1778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~