加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

使用查询重写临时性屏蔽mysql高耗sql

发布时间:2022-12-14 14:03:49 所属栏目:MySql教程 来源:未知
导读: 点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
前 言在我们mysql的日常运维过程中,时常会碰到突发性的高耗sql,比如业务上线变更、营销活动等等。针对

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

前 言在我们mysql的日常运维过程中,时常会碰到突发性的高耗sql,比如业务上线变更、营销活动等等。针对这类sql无法使用索引优化时,为了避免持续性的高消耗引起其他应用模块的连锁故障,往往需要临时性的屏蔽该类sql降低系统负载,今天我们就来研究一下mysql中如何使用查询重写来达到此目的。

首先查询重写功能在官方文档的5.6章节,详细信息可以参数文档。其主要思想为将用户输入的sql语句转换为dba指定的sql语句,以达到dba的预期行为。本文将模拟一个案例进行阐述。

案例模拟复现1. 启动重写插件

mysql ip段查询_mysql查询_mysql排序查询

直接调用share目录下的install_rewriter.sql脚本即可安装,show rewriter_enabled确认状态为on,注意可在线启动插件无需重启。2. 模拟并发sql产生异常消耗

mysql查询_mysql ip段查询_mysql排序查询

图中可以看到sql属于分析类,条件扫描范围较大,无法通过在谓词条件直接建立索引进行优化。应用模块无法快速定位解决时,dba便可以使用重写来达到屏蔽sql行为。3. 重写sql,屏蔽异常开销

mysql排序查询_mysql ip段查询_mysql查询

图中我们第一次执行,返回是按city分组的3行结果,使用select 1替换原sql并写入rewrite_rules规则,注意谓词条件值可以使用?代替,相当于绑定变量. Flush规则后,再次执行sql,其warning已提示该sql已被重写。

由于结果是dba人为指定的常量值,sql未进入innodb引擎直接在server层返回,效率直线上升,从而降低异常开销,提升mysql运行稳定性。

使用情况总结上文中我们使用查询重写屏蔽了sql的异常开销,需要注意重写规则一定要经过变更审核。实际在日常工作中还有大量的情况需要使用到查询重写,比如innodb优化器缺陷需要在sql明文中指定hint干预执行计划。当然这种情况也可以在应用程序sql文本中进行改造mysql查询,这里仅是提供一个在数据库层处理的思路。本文就到此为止。

mysql查询_mysql ip段查询_mysql排序查询

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!