Chinaunix首页 | 论坛 | 博客
  • 博客访问: 413966
  • 博文数量: 137
  • 博客积分: 5190
  • 博客等级: 大校
  • 技术积分: 997
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 16:19
文章存档

2011年(17)

2010年(120)

我的朋友

分类: Mysql/postgreSQL

2011-09-21 14:26:45

分析binlog,找出热表
2011年04月26日 11:55

分析binlog,找出热表:
(1)binlog中记录的都是dml语句,主要包括update insert 和delete,先过滤出来:
mysqlbinlog mysql-bin.005751 |grep -i -E "^(update|insert|delete)" > 1.dml.sql
(2)找出最近的10w条sql来分析:
tail -n 100000 1.dml.sql > 2.tail_dml.sql
(3)把所有的数字替换成D, 这样可以统计分表上面的sql:
sed -i -r 's/[0-9]{1,}/D/g' 2.tail_dml.sql
(4)排序,找出执行次数最多的sql语句,按照降序排列,取top 50的sql来分析:
sort 2.tail_dml.sql |uniq -c |sort -n -r |head -n 50 > 3.sorted_top_50.sql

 

如果是dml语句导致的io问题,就可以考虑优化top 50的热门sql语句涉及到的表结构,来降低服务器负载.

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