加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL 8.0 Query Rewrite支撑DML

发布时间:2023-07-25 14:22:53 所属栏目:MySql教程 来源:
导读:MySQL 8.0 Query Rewrite支持SELECT INSERT UPDETE DELETE REPLACE语句重写

这个功能要点赞,比如开发上线时,有个SQL查询字段索引忘记加了,直接把线上CPU打满,此时,你可以将SQL重写,让业务先报错,别打死数
MySQL 8.0 Query Rewrite支持SELECT INSERT UPDETE DELETE REPLACE语句重写
 
这个功能要点赞,比如开发上线时,有个SQL查询字段索引忘记加了,直接把线上CPU打满,此时,你可以将SQL重写,让业务先报错,别打死数据库,然后马上通知开发回滚,等加完索引后再上线。
 
安装插件
 
mysql -S /tmp/mysql_hcy.sock -p123456 <./install_rewriter.sql
 
查看是否生效
 
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)
 
 

(编辑:聊城站长网)

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

    推荐文章