白手起家
分析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语句涉及到的表结构,来降低服务器负载.
本版积分规则 发表回复 回帖后跳转到最后一页
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567未成年举报专区 中国互联网协会会员 联系我们:huangweiwei@itpub.net 感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处