mysql 性能 定位_MySQL优化之 定位性能问题

要优化MySQL, 先要找出问题的所在, 是那一块东西拖累的数据库的速度。 大多数的MySQL性能问题是因为数据算法设计不合理,导致某些SQL语句占用了非常多的资源。 我们按照这个步骤来进行: 1. 先分析那些SQL是执行次数最多的。 我们会用到?tcpdump?(一个抓包

要优化MySQL, 先要找出问题的所在, 是那一块东西拖累的数据库的速度。

大多数的MySQL性能问题是因为数据算法设计不合理,导致某些SQL语句占用了非常多的资源。 我们按照这个步骤来进行:

1. 先分析那些SQL是执行次数最多的。

我们会用到?tcpdump?(一个抓包工具)?, 来抓取到3306端口的数据包, 进而分析MySQL都在做了些什么

首先我们来安装tcpdump

wget http://maatkit.googlecode.com/files/maatkit-6652.tar.gz

tar zxvf maatkit-6652.tar.gz -C /usr/local/

cd /usr/local/maatkit-6652

perl Makefile.PL make install

然后用下边的命令分析MySQL正在做什么, 并写到临时文件 mysql.tmp里

time tcpdump -i eth0 -s 1500 src host 192.168.2.10 -w mysql.tmp

接下来分析 那些SQL执行的次数最多

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执行的次数

2. 分析比较慢的查询

//TODO

3. 找到为什么 SQL语句执行比较慢

//TODO

声明: 本文采用 CC BY-NC-SA 3.0 协议进行授权

转载请注明来源:小景的博客

本文链接地址:http://www.phpv5.com/blog/archives/47/

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值