mysql query rewrite_MySQL 8.0 Query Rewrite支持DML

MySQL 8.0 Query Rewrite支持DML

发布时间:2020-02-29 01:44:34

来源:51CTO

阅读:273

作者:hcymysql

MySQL 8.0 Query Rewrite支持SELECT INSERT UPDETE DELETE REPLACE语句重写

这个功能要点赞,比如开发上线时,有个SQL查询字段索引忘记加了,直接把线上CPU打满,此时,你可以将SQL重写,让业务先报错,别打死数据库,然后马上通知开发回滚,等加完索引后再上线。

安装插件mysql -S /tmp/mysql_hcy.sock -p123456 <.>

查看是否生效SHOW GLOBAL VARIABLES LIKE 'rewriter_enabled';

编写重写规则insert into query_rewrite.rewrite_rules(pattern, replacement,

pattern_database) values (

"SELECT * from sbtest1 limit ?",

"SELECT k,c from sbtest1 limit ?",

"test");

意思为:

将以下语句

SELECT * from sbtest1 limit ?;

改写成:

SELECT k,c from sbtest1 limit ?;

注:问号?为变量

执行规则生效CALL query_rewrite.flush_rewrite_rules();

演示mysql> SELECT * from sbtest1 limit 1\G;

*************************** 1. row ***************************

k: 499284

c: 83868641912-28773972837-60736120486-75162659906-27563526494-20381887404-41576422241-93426793964-56405065102-33518432330

1 row in set, 1 warning (0.00 sec)

ERROR:

No query specified

mysql> show warnings\G

*************************** 1. row ***************************

Level: Note

Code: 1105

Message: Query 'SELECT * from sbtest1 limit 1' rewritten to 'SELECT k,c from sbtest1 limit 1' by a query rewrite plugin

1 row in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值