DBA如何不用和开发撕逼直接做SQL优化?

  • Post author:
  • Post category:其他


0、导读

DBA很头疼的事情就是经常要和开发撕逼,无非就是要让对方改掉某些SB的SQL写法,但是呢,得到的回复不是“业务太赶,改不了”,就是“这个业务没什么量,没事的啦”,你妹啊~~~

不怕,现在哥告诉你一个神器,再也不用去费力撕逼了!

1、怎么做到的?

开始之前呢,老叶是要先打个广告的,嘿,只有一页,忍忍哈
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

这个神器其实就是MySQL 5.7新增的一个功能,称为:query rewrite。上周四吴炳锡老师分享了这个话题。

下面是关于它的一个简介:
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

那么,query write这个plugin是怎么实现sql rewrite,达到不需要开发去改SQL的呢,且看下面2个图:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

看到了吧,其实就是在Server层收到SQL后,在解析器(Parser)对SQL进行改写,再发送到优化器(Optimizer)去解析执行计划,进一步进行优化。

有了Query Rewrite功能,基本上可以避免那些常见的问题SQL了。比如分页SQL里的LIMIT从一个超大偏移量开始取值,就可以改造成JOIN语句。又或者,可以避免那种没有WHERE条件的SQL被执行。也可以避免潜在的类型转换风险。看看下面几个案例:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


甚至还可以加入5.7最新支持的超时控制,再SB的SQL提交后,超过指定的时间阈值后就会自动被kill,再也不用担心一些垃圾SQL造成MySQL请求拥塞了,像下面这么玩:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


说了那么多,不知道你心动了没有呢?不过,老叶好像还没告诉你怎么启用Query Rewrite Plugin吧,汗。其实不难,执行一条SQL命令就搞定了:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

用法也很简单,比如:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


设置下这样的一个规则,就可以把所有


SELECT ?


这样的SQL,自动改写为


SELECT ? + 1;

嗯,还是挺简单的吧?

2、完整内容

这次公开课的PPT、视频已上传到百度云盘,

链接:



http://pan.baidu.com/s/1dEApr4t



,欢迎转存及转发(扫描下方二维码识别)
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

知数堂培训全新MySQL DBA课程第九期和Python运维开发班第三期正在招生中,扫描下方二维码加入QQ群




529671799




(加群暗号:知数堂) 获得最新信息。
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


关于知数堂


http://zhishuedu.com

“知数堂培训”是由资深MySQL专家叶金荣、吴炳锡联合推出专业优质在线培训课程,主要有MySQL DBA实战优化和Python运维开发两个课程,是业内最有良心、最有品质的培训课程。

完整PPT内容见下面

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

最后再次感谢大家对知数堂培训的支持和关注!



文章转自老叶茶馆公众号,原文链接:https://mp.weixin.qq.com/s/JJ9ZS4MV4blAoWT9EmmsGw