MySQL query_rewrite功能


query_rewrite 插件功能

  • MySQL 5.7 版本新特性
  • 作用是把輸入的一種語句改寫成另外一種模式
  • 優(yōu)勢是業(yè)務(wù)無法及時調(diào)整情況下通過MySQL將接收到的語句改寫衙熔,如強制使用索引九孩、子查詢優(yōu)化等

安裝插件

  • 支持社區(qū)版
  • 官方自帶腳本安裝
# 安裝腳本位于MySQL的share目錄,腳本集成了安裝插件阱扬,建相應(yīng)庫表操作
mysql -S /tmp/mysql_sandbox5725.sock -uroot -proot < /opt/sandboxes/base/5.7.25/share/install_rewriter.sql

# 對應(yīng)卸載使用腳本uninstall_rewriter.sql
  • 安裝完成將自動創(chuàng)建query_rewrite庫rewrite_rules表
show create table query_rewrite.rewrite_rules\G
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 規(guī)則id 泣懊,此列是表的主鍵。
pattern 需要改寫的源SQL
pattern_database 需要改寫的DB名稱
replacement 指定改寫后的樣子
enabled 改寫是否啟用

插件使用

啟用與關(guān)閉

  • rewriter_enabled參數(shù)可全局關(guān)閉/開啟 query_rewrite功能

改寫語句

# 直接插入要改寫的語句麻惶、改寫后的以及對應(yīng)業(yè)務(wù)庫即可
INSERT INTO query_rewrite.rewrite_rules
    (pattern, replacement, pattern_database) VALUES(
    'SELECT * FROM users WHERE id = ?',
    'SELECT * FROM users WHERE user_id = ?',
    'appdb'
    );
或或?qū)憥焘晒危砬凹訉僦?INSERT INTO query_rewrite.rewrite_rules
    (pattern, replacement) VALUES(
    'SELECT * FROM appdb.users WHERE id = ?',
    'SELECT * FROM appdb.users WHERE user_id = ?'
    );

# 調(diào)用存儲過程是讓插入的新規(guī)則生效
CALL query_rewrite.flush_rewrite_rules();

舉例說明

# 希望select不加where條件的語句默認(rèn)都帶上 limit 1的效果
mysql> select * from t_user;
+----+---------+------+
| id | name    | age  |
+----+---------+------+
|  1 | Michael |   18 |
|  2 | Jane    |   20 |
|  3 | Lucy    |   17 |
|  4 | Antony  |   35 |
+----+---------+------+

# 插入改寫規(guī)則
INSERT INTO query_rewrite.rewrite_rules
    (pattern, replacement, pattern_database) VALUES(
    'SELECT * FROM t_user',
    'SELECT * FROM t_user limit 1',
    'test'
    );


# 調(diào)用存儲過程使規(guī)則生效
CALL query_rewrite.flush_rewrite_rules();

# 效果
mysql> select * from t_user;
+----+---------+------+
| id | name    | age  |
+----+---------+------+
|  1 | Michael |   18 |
+----+---------+------+
1 row in set, 1 warning (0.00 sec)

參考

https://dev.mysql.com/doc/refman/5.7/en/rewriter-query-rewrite-plugin.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市窃蹋,隨后出現(xiàn)的幾起案子卡啰,更是在濱河造成了極大的恐慌,老刑警劉巖警没,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匈辱,死亡現(xiàn)場離奇詭異,居然都是意外死亡杀迹,警方通過查閱死者的電腦和手機亡脸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浅碾,你說我怎么就攤上這事大州。” “怎么了及穗?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵摧茴,是天一觀的道長。 經(jīng)常有香客問我埂陆,道長苛白,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任焚虱,我火速辦了婚禮购裙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹃栽。我一直安慰自己躏率,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布民鼓。 她就那樣靜靜地躺著薇芝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丰嘉。 梳的紋絲不亂的頭發(fā)上夯到,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音饮亏,去河邊找鬼耍贾。 笑死,一個胖子當(dāng)著我的面吹牛路幸,可吹牛的內(nèi)容都是我干的荐开。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼简肴,長吁一口氣:“原來是場噩夢啊……” “哼晃听!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起砰识,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤能扒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仍翰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赫粥,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年予借,在試婚紗的時候發(fā)現(xiàn)自己被綠了越平。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片频蛔。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秦叛,靈堂內(nèi)的尸體忽然破棺而出晦溪,到底是詐尸還是另有隱情,我是刑警寧澤挣跋,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布三圆,位于F島的核電站,受9級特大地震影響避咆,放射性物質(zhì)發(fā)生泄漏舟肉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一查库、第九天 我趴在偏房一處隱蔽的房頂上張望路媚。 院中可真熱鬧,春花似錦樊销、人聲如沸整慎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裤园。三九已至,卻和暖如春剂府,著一層夾襖步出監(jiān)牢的瞬間拧揽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工周循, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留强法,地道東北人万俗。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓湾笛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闰歪。 傳聞我的和親對象是個殘疾皇子嚎研,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容