导读:MySQL Query Rewrite Plugin 是 MySQL 5.7.6 引入的新功能,可以让 MySQL DBA 在 Server 内做一些 SQL 改写及优化,用于一些紧急优化或是测试上线。本文是吴炳锡在高可用架构群的分享,介绍如何如何使用该功能。
吴炳锡,知数堂联合创始人,MySQL DBA 课程讲师,前新媒传信首席 DBA、MySQL 中国用户组(ACMUG)主席。吴炳锡老师有多年 MySQL 及系统架构设计及培训教学经验,擅长 MySQL 大规模运维管理优化、高可用方案、多 IDC 架构设计,企业级应用数据库设计等。
大家好,我是吴炳锡 从MySQL工作10多年了,从MySQL 4.X开始折腾MySQL,跨度了MySQL 5.0, MySQL 5.1 , MySQL 5.5, MySQL 5.6及现在的MySQL 5.7,也经历了: MySQL AB,Percona, MySQL Sun,MariaDB Oracle MysQL这些公司对MySQL的发展的看法。 目前我和叶金荣,在全职创办: 知数堂 http://zhishuedu.com 从事MySQL ,Python,大数据相关的培训及服务支持工作。同时,也推荐一下个人的公众号(刚出生不久的一个公众号):
今天我给大家分享主题是:《MySQL Query Rewrite Plugin 的使用》 首先给大看一下 MySQL 5.7 后支持新特性:
这些还没包括一些微优化,如MySQL 5.7的分区不在是Server端处理,而是在引擎层处理,等等。
这里面很多功能,可以说是让你会觉是MySQL是一个全新的DB。 因为时间关系,我这里就不啰嗦了,大家以后有兴趣的,也可以一块去研究传播。也欢迎给我投稿。
Query Rewrite Plugin 介绍
MySQL发展到今天已经不是原来那个MySQL只能用来做增删改查,压力一大都容易压挂。现在的MySQL也可以顶住非常压力,来减少程序开发人员的任务。MySQL Query Rewrite Plugin就是这么一个神器,可以让MySQL DBA在Server内做一些SQL改写及优化,用于一些紧急优化或是测试上线。 该功能是MySQL 5.7.6引入进来的。
需要注意以下约束:
• 只针对标准的SELECT语句工作,不能对视图定义及存储过程中SELECT语句改写
• 改写规则记录在内存中,实际对应到:query_rewrite库下的rewrite_rules这个表
• 利用query_rewrite下的存储过程: flush_rewrite_rules() 及DML语句来加载更改规则
工作原理
客户端发起SQL请求,在Server内部进行改写,然后在执行。 在这个改写可以在接收到SQL的明文SQL改写,也可以是优化器处理完后的词法树改写,目前这块使用是的明文改写。也可以参考下图: