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

0、导读

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

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

1、怎么做到的?

开始之前呢,老叶是要先打个广告的,嘿,只有一页,忍忍哈

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

下面是关于它的一个简介:

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

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

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

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

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


用法也很简单,比如:

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

SELECT ?

这样的SQL,自动改写为

SELECT ? + 1;

嗯,还是挺简单的吧?

2、完整内容

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

链接: http://pan.baidu.com/s/1dEApr4t ,欢迎转存及转发(扫描下方二维码识别)

知数堂培训全新MySQL DBA课程第九期和Python运维开发班第三期正在招生中,扫描下方二维码加入QQ群 529671799 (加群暗号:知数堂) 获得最新信息。

关于知数堂

http://zhishuedu.com

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

完整PPT内容见下面

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

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

时间: 2024-09-04 01:30:25

DBA如何不用和开发撕逼直接做SQL优化?的相关文章

如何看待开发人员转型做产品经理?

之所以谈论如何看待开发人员转型做产品经理这个话题,是因为之前有人在小密圈跟我提问,他想从技术转为做产品,如何转型,我把之前分享和回答的又进行了稍微的修整,分享给大家. 对于开发人员来说,其实晋升通道很窄,而且又少(注意:这并不代表程序员是吃青春饭的,而且程序员绝对不是吃青春饭的).一般一个开发团队小的前端,后台,设计加起来也就10人左右,大的几十人,甚至几百人,但是能够做到技术经理,甚至CTO的,一个团队也就一两个人,这也就是意味着你得有身穿长袍,单枪匹马从千军万马中神情自若,脱颖而出的本领才可

手机应用程序开发前需做什么

  顾名思义,所谓手机程序就是可以在安装在手机上的程序,完善原始系统的不足与个性化.随着科技的发展,现在手机的功能也越来越多,越来越强大.不是像过去的那么简单死板,目前发展到了可以和掌电脑相媲美.手机应用程序与电脑一样,下载手机应用程序时还要考虑你购买这一款手机所安装的系统来决定要下相对应的程序. 开发前需做什么-小程序适合做什么应用"> 2007年前手机主流系统有以下:Symbian.Linux.Research in Motion.Windows Mobile.但是在2007年,苹果推

android-个人开发个如何做Android地图,求大体思路

问题描述 个人开发个如何做Android地图,求大体思路 最近本人有个作业要两个月后交,作业就是根据地图规划最佳的地铁路线.本人现在对此作业还是零思路,毫无切入点,寻求大神给个大体思路与技术方向.需求如下.首先我需要在APP中把地图显示出来,如同百度地图一般,可以缩放,根据定位找到最佳到地铁站的路线,然后根据此路线进行导航,到地铁站后,可以切换模式,把地图中不相关的位置图去掉,只保留所在城市的地铁路线图,且显示地铁路线中站名,然后在此仅保留有地铁路线图的地图中进行规划最佳的路线,比如从A地到B地

找asp.net开发人员一起做一个事业,有想法的进来看看

问题描述 想做一个网页游戏,纯网页的游戏,大概属于养成类的,并且开放接口,让所有爱好者一起做其它功能,像开源项目一样.如果你有时间,有能力,也不想永远做.net开发人员,可以考虑和我聊一下:laoyangui(at)gmail.com_______________________________ASP.NET=>非技术区版主:请不要在技术区发非技术帖这次我帮你转移了,下次将直接删除三次以上,除直接删除外,将封杀ID具体版规请参考置顶的版务帖~ 解决方案 本帖最后由 viena 于 2008-04

arcgis-python开发ArcGIS可以做什么

问题描述 python开发ArcGIS可以做什么 Python开发GIS,除了做工具箱里的脚本,可以做工具栏里面的按键式的工具么?例如这种工具:点一下工具栏里面的按钮,鼠标点选一系列点,双击后弹出交互界面,对选中点的属性按选则顺序进行赋值. 解决方案 做用户界面你可以用C#.如果你非常喜欢python,你可以通过IronPython脚本引擎在C#程序中集成Python代码.

c# socket通信-c# socket开发应该怎么做??

问题描述 c# socket开发应该怎么做?? 关于socket开发,有什么比较好的栗子或者封装好的模块没?通信的时候缓冲区怎么处理?数据不连续怎么处理?怎么判断数据是否完全到达了? 解决方案 这些问题自己搜就好了,这里随便说几句,你更不懂 解决方案二: Socket一般用来封装更好的库来使用,没有直接单单的使用socket做什么,现在的IM通讯,文件传输都是socket,但是这些都有现成的封装库,底层是用SOCKET实现的

rdlc不用子報表,怎做下面格式的報表

问题描述 請問:rdlc不用子報表,怎做下面格式的報表:銷售單單號xxxxx客戶xxxx地址xxxxx行號料號數量金額-----------------------------------------------1xxxxxxxxxxxxxxxx.xx2xxxxxxxxxxxxxxxx.xx3xxxxxxxxxxxxxxxx.xx...簽名:________ 解决方案 解决方案二:看來不行,pb中是可以的

csdn 网站的 2周内不用再登录 是如何做的,请告诉一下,最好具体的代码

问题描述 csdn网站的 2周内不用再登录是如何做的,请告诉一下,最好具体的代码 解决方案 解决方案二:cookies里面有个属性设置到什么时候过期解决方案三:写cookies解决方案四:cookie的过期时间解决方案五:if(登录成功){HttpCookiemyCookie=newHttpCookie("Login");myCookie.Values["UserName"]=txtUserName.Text.Trim();myCookie.Values["

DBA不失业:云时代的数据库性能优化全攻略

性能问题是数据库中最重要也是最迫切要解决的问题之一,随着业务的发展和数据的不断加增,用户对于系统的响应速度的要求越来越高.而归根结底就是要提高数据库系统的性能.对于大部分的DBA来说,性能优化并不是一件容易的事情,造成性能问题的原因多种多样,在现实中,优化过程也会受到重重阻碍,随着云时代的到来以及自动化智能化运维的发展,那么云时代的DBA该如何优化数据库的性能呢? 在今年的数据技术嘉年华上,我们邀请了来自国内外各大企业的性能优化专家,从不同的角度分析云时代数据库性能优化的技术与技巧. 重点嘉宾与