【新特性】MySQL5.7新特性query_rewrite 插件

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL5.7新特性query_rewrite 插件

一。使用场景

在业务繁忙并且紧急上线,对就是那种特别繁忙,又不能停的那种。在系统不忙的时候 明明跑的很好。**但是**一旦业务繁忙,造成业务阻塞。当查看MySQL的满查询日志中发现大量慢查询日志,(不是单单加索引就能搞定的哦)。这时候怎么办,难道怒对开发一顿,这时候你需要MySQL5.7新特性query_rewrite _Plugin插件了。

二。安装配置插件
2.1安装

[root@localhost share]# /usr/local/mysql/bin/mysql -u root -p < install_rewriter.sql 
Enter password: 
[root@localhost share]# pwd
/usr/local/mysql/share

验证


"root@localhost:mysql.sock  [(none)]>show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| query_rewrite      |
| sys                |
+--------------------+

安装完成了 似不似很简单呢~QAQ~

2.2配置一发

"root@localhost:mysql.sock  [(none)]>use query_rewrite;
Database changed
"root@localhost:mysql.sock  [query_rewrite]>show tables;
+-------------------------+
| Tables_in_query_rewrite |
+-------------------------+
| rewrite_rules           |
+-------------------------+

查看rewrite_rules表,表结构大概是这样的


CREATE TABLE `rewrite_rules` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pattern` varchar(10000) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `pattern_database` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `replacement` varchar(10000) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `enabled` enum('YES','NO') CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT 'YES',
  `message` varchar(1000) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `pattern_digest` varchar(32) DEFAULT NULL,
  `normalized_pattern` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

id :规则id ,此列是表的主键。
pattern:需要改写的源SQL
pattern_database:需要改写的DB名称
replacement:指定改写后的样子
enabled:是否启用

2.3举个栗子

CREATE TABLE `aa` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
"root@localhost:mysql.sock  [aa]>insert into aa values (1,'a');
"root@localhost:mysql.sock  [aa]>insert into aa values (2,'a');     

在query_rewrite中修改规则

"root@localhost:mysql.sock  [aa]>insert into query_rewrite.rewrite_rules(pattern, replacement, pattern_database) values (
    -> "select * from aa ","select * from aa where id=1", "aa");

"root@localhost:mysql.sock  [aa]>call query_rewrite.flush_rewrite_rules(); #加载一下

验证

root@localhost:mysql.sock  [aa]>select * from aa;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
+------+------+

是不是感觉很神奇呢,对于那种SQL隐式转换啦,强制走个索引啦 子查询的优化啦 等等等等 。尤其是系统繁忙来不及修改程序 来不及修改SQL的时候。真的能够救你的系统一命哦。如果你想让某个SQL变慢哦,让某个程序员背锅也是可以的哦。。

三.总结
建议多关注一下MySQL的新特性。不知不觉就能使用到,有效提升和改善业务环境。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 SQL 关系型数据库
MySQL相关(五)- 事务四大特性及隔离级别的详细介绍
MySQL相关(五)- 事务四大特性及隔离级别的详细介绍
43 0
|
3月前
|
存储 SQL 关系型数据库
MySQL 事务的 ACID 特性
MySQL事务是什么,**它就是一组数据库的操作,是访问数据库的程序单元,事务中可能包含一个或者多个 SQL 语句。这些SQL 语句要么都执行、要么都不执行。**我们知道,在MySQL 中,有不同的存储引擎,有的存储引擎比如MyISAM 是不支持事务的,所以说**MySQL 事务实际上是发生在 存储引擎部分**。
50 0
MySQL 事务的 ACID 特性
|
4月前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL8.1.0版本正式发布带来哪些新特性?
MySQL8.1.0版本正式发布带来哪些新特性?
236 0
MySQL8.1.0版本正式发布带来哪些新特性?
|
5月前
|
SQL 关系型数据库 MySQL
MySQL5.7 group by新特性报错1055的解决办法
MySQL5.7 group by新特性报错1055的解决办法
|
2月前
|
SQL 关系型数据库 MySQL
Mysql事务隔离级别和锁特性
Mysql事务隔离级别和锁特性
|
1天前
|
SQL 关系型数据库 MySQL
MySQL8.0索引新特性
MySQL8.0索引新特性
|
4月前
|
SQL 关系型数据库 MySQL
⑨【MySQL事务】事务开启、提交、回滚,事务特性ACID,脏读、幻读、不可重复读。
⑨【MySQL事务】事务开启、提交、回滚,事务特性ACID,脏读、幻读、不可重复读。
35 0
|
4月前
|
存储 SQL 关系型数据库
MySQL8.0新特性与旧特性移除总结
MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是对MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。
123 1
|
29天前
|
存储 缓存 关系型数据库
MySQL事务的四大特性是如何保证的
在MySQL数据库中还有一种二进制日志,其用来基于时间点的还原及主从复制。从表面上来看其和重做日志非常相似,都是记录了对于数据库操作的日志。但是,从本质上来看有着非常大的不同。
14 1
|
1月前
|
SQL 关系型数据库 MySQL
深入理解MySQL事务特性:保证数据完整性与一致性
深入理解MySQL事务特性:保证数据完整性与一致性
97 1