日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL中间件之ProxySQL(11):链式规则( flagIN 和 flagOUT )

發布時間:2025/3/20 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL中间件之ProxySQL(11):链式规则( flagIN 和 flagOUT ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html

?

1.理解鏈式規則

在mysql_query_rules表中,有兩個特殊字段"flagIN"和"flagOUT",它們分別用來定義規則的入口和出口,從而實現鏈式規則(chains of rules)。

鏈式規則的實現方式如下:

  • 當入口值flagIN設置為0時,表示開始進入鏈式規則。如未顯式指定規則的flagIN值,則默認都為0。
  • 當語句匹配完當前規則后,將記下當前規則的flagOUT值,如果flagOUT值非空(NOT NULL),則為該語句打上flagOUT標記。如果該規則的apply字段值不是1,則繼續向下匹配。
  • 如果語句的flagOUT標記和下一條規則的flagIN值不同,則跳過該規則,繼續向下匹配。直到匹配到flagOUT=flagIN的規則,則匹配該規則。該規則是鏈式規則中的另一條規則。
  • 直到某規則的apply字段設置為1,或者已經匹配完所有規則,則最后一次被評估的規則將直接生效,不再繼續向下匹配。
  • 通過下面兩張圖,應該很容易理解鏈式規則的生效方式。

    必須注意,規則是按照rule_id的大小順序進行的。且并非只有apply=1時才會應用規則,當無規則可匹配,或者某規則的flagIN和flagOUT值相同,都會應用最后一次被評估的規則

    以下幾個示例,可以解釋生效規則:

    # rule_id=3 生效 +---------+-------+--------+---------+ | rule_id | apply | flagIN | flagOUT | +---------+-------+--------+---------+ | 1 | 0 | 0 | 23 | | 2 | 0 | 23 | 23 | | 3 | 0 | 23 | NULL | +---------+-------+--------+---------+# rule_id=2 生效 +---------+-------+--------+---------+ | rule_id | apply | flagIN | flagOUT | +---------+-------+--------+---------+ | 1 | 0 | 0 | 23 | | 2 | 0 | 23 | 23 | | 3 | 0 | 24 | NULL | +---------+-------+--------+---------+# rule_id=2 生效,因為匹配完rule_id=2后,還打著flagOUT=23標記 +---------+-------+--------+---------+ | rule_id | apply | flagIN | flagOUT | +---------+-------+--------+---------+ | 1 | 0 | 0 | 23 | | 2 | 0 | 23 | NULL | | 3 | 1 | 24 | NULL | +---------+-------+--------+---------+# rule_id=3 生效,因為匹配完rule_id=2后,還打著flagOUT=23標記 +---------+-------+--------+---------+ | rule_id | apply | flagIN | flagOUT | +---------+-------+--------+---------+ | 1 | 0 | 0 | 23 | | 2 | 0 | 23 | NULL | | 3 | 1 | 23 | NULL | +---------+-------+--------+---------+

    2.鏈式規則示例

    有了普通規則匹配方式,為什么還要設計鏈式規則呢?雖然ProxySQL通過正則表達式實現了很靈活的規則匹配模式,但需求總是千變萬化的,有時候僅通過一條正則匹配規則和替換規則很難實現比較復雜的要求,例如sharding時。

    鏈式規則除了常用的多次替換,還可巧用于多次匹配

    本文簡單演示一下鏈式規則,不具有實際意義,只為后面ProxySQL實現sharding的文章做基礎知識鋪墊。

    2個測試庫,共4張表test{1,2}.t{1,2}。

    mysql> select * from test1.t1; +------------------+ | name | +------------------+ | test1_t1_malong1 | | test1_t1_malong2 | | test1_t1_malong3 | +------------------+mysql> select * from test1.t2; +------------------+ | name | +------------------+ | test1_t2_malong1 | | test1_t2_malong2 | | test1_t2_malong3 | +------------------+mysql> select * from test2.t1; +--------------------+ | name | +--------------------+ | test2_t1_xiaofang1 | | test2_t1_xiaofang2 | | test2_t1_xiaofang3 | +--------------------+mysql> select * from test2.t2; +--------------------+ | name | +--------------------+ | test2_t2_xiaofang1 | | test2_t2_xiaofang2 | | test2_t2_xiaofang3 | +--------------------+

    現在借用鏈式規則,一步一步地將對test1.t1表的查詢路由到test2.t2表的查詢。再次聲明,此處示例毫無實際意義,僅為演示鏈式規則的基本用法。

    大致鏈式匹配的過程為:

    test1.t1 --> test1.t2 --> test2.t1 --> test2.t2

    以下是具體插入的規則:

    delete from mysql_query_rules; select * from stats_mysql_query_digest_reset where 1=0;insert into mysql_query_rules (rule_id,active,apply,flagIN,flagOUT,match_pattern,replace_pattern) values (1,1,0,0,23,"test1\.t1","test1.t2");insert into mysql_query_rules (rule_id,active,apply,flagIN,flagOUT,match_pattern,replace_pattern) values (2,1,0,23,24,"test1\.t2","test2.t1");insert into mysql_query_rules (rule_id,active,apply,flagIN,flagOUT,match_pattern,replace_pattern,destination_hostgroup) values (3,1,1,24,NULL,"test2\.t1","test2.t2",30);load mysql query rules to runtime; save mysql query rules to disk;admin> select rule_id,apply,flagIN,flagOUT,match_pattern,replace_pattern,destination_hostgroup DHfrom mysql_query_rules; +---------+-------+--------+---------+---------------+-----------------+------+ | rule_id | apply | flagIN | flagOUT | match_pattern | replace_pattern | DH | +---------+-------+--------+---------+---------------+-----------------+------+ | 1 | 0 | 0 | 23 | test1\.t1 | test1.t2 | NULL | | 2 | 0 | 23 | 24 | test1\.t2 | test2.t1 | NULL | | 3 | 1 | 24 | NULL | test2\.t1 | test2.t2 | 30 | +---------+-------+--------+---------+---------------+-----------------+------+

    查詢test1.t1表,測試結果。

    [root@xuexi ~]# mysql -uroot -pP@ssword1! -h127.0.0.1 -P6033 -e "select * from test1.t1;" +--------------------+ | name | +--------------------+ | test2_t2_xiaofang1 | <-- 查詢返回結果為test2.t2內容 | test2_t2_xiaofang2 | | test2_t2_xiaofang3 | +--------------------+admin> select * from stats_mysql_query_rules; +---------+------+ | rule_id | hits | +---------+------+ | 1 | 1 | <-- 3條規則全都命中 | 2 | 1 | | 3 | 1 | +---------+------+admin> select hostgroup,digest_text from stats_mysql_query_digest; +-----------+----------------------------------+ | hostgroup | digest_text | +-----------+----------------------------------+ | 30 | select * from test2.t2 | <-- 路由目標hg=30 +-----------+----------------------------------+

    顯然,已經按照預想中的方式進行匹配、替換、路由。

    一個問題:如果查詢的是test1.t2表或test2.t1表,會進行鏈式匹配嗎?
    答案是不會,因為rule_id=2和rule_id=3這兩個規則的flagIN都是非0值,而每個SQL語句初始時只進入flagIN=0的規則。

    此外還需注意,當某語句未按照我們的期望途經所有的鏈式規則,則可能會根據destination_hostgroup字段的值直接路由出去,即使沒有指定該字段值,還有用戶的默認路由目標組,或者基于端口的路由目標。所以,在寫鏈式規則時,應當盡可能地針對某一類型的語句進行完完整整的定制,保證這類語句能途經我們所期望的所有規則。

    總結

    以上是生活随笔為你收集整理的MySQL中间件之ProxySQL(11):链式规则( flagIN 和 flagOUT )的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 色妞综合| 国产精品久久久久精 | 日韩性大片 | 久久国内免费视频 | 久久精品一区二区三 | 国产精品黄色网 | ,国产精品国产三级国产 | 亚洲男人天堂2017 | 欧美三级久久久 | 黄色网战入口 | 高潮白浆女日韩av免费看 | www久久com | 97se视频| 久久久中文 | 国产精品久热 | 欧美激情国产精品免费 | 三级男人添奶爽爽爽视频 | 99re6这里有精品热视频 | 一区二区三区免费在线观看视频 | 欧美xxxx喷水 | 亚洲一区二区三区免费观看 | 成年人免费在线视频 | 91传媒在线播放 | 亚洲情涩 | jizz亚洲女人| 日韩视频一二三区 | 国产精品偷乱一区二区三区 | 高清av网站 | 欧美疯狂做受xxxxx高潮 | 国产二三区 | 四虎成人在线视频 | 中文字幕日韩专区 | 丁香六月啪啪 | 涩漫天堂 | 亚洲精品视频久久久 | 亚洲美女性生活视频 | av片在线免费看 | 亚洲欧洲无码一区二区三区 | 亚洲第一色网站 | 国产一国产二国产三 | 污污的网站在线观看 | 爱插美女网 | 欧美在线免费观看 | 欧美成人午夜剧场 | 国产麻豆a毛片 | 曰韩在线 | 麻豆影视| 亚洲激情欧美 | 亚洲精品2区 | 久久免费看少妇高潮v片特黄 | 中文字幕激情小说 | 在线观看a级片 | 成人免费网站 | 国产日韩欧美视频在线观看 | 美女福利在线视频 | 丰满人妻一区二区三区免费视频棣 | 嫩草影院菊竹影院 | 日本大尺度做爰呻吟 | 人人草人人澡 | 国产成人综合在线视频 | jiizzyou欧美2 | 色99999| 国产二级一片内射视频播放 | 欧美片免费网站 | 成人污在线 | 成人av影院 | 献给魔王伊伏洛基亚吧动漫在线观看 | 亚洲色欧美另类 | 亚洲性图一区二区 | 999午夜 | 日韩在线观看一区 | 久久久久性 | 欧美性xxxx| 日韩av中文在线观看 | 岛国av不卡 | 国产97色在线 | 国产 | 秋霞成人av | 精品无人区无码乱码毛片国产 | 天堂视频在线观看免费 | 国产精品影院在线观看 | 日本黄网在线观看 | 婷婷亚洲精品 | 欧美一区二区三区久久 | 午夜视频在线观看一区二区 | 国产精品久久久久久久久久久新郎 | 精品成人无码久久久久久 | 中文字幕高潮 | 精品国产精品国产偷麻豆 | 久久精品这里有 | 日本黄色小说 | 日韩精品乱码久久久久久 | 亚洲天堂av线 | 在线观看91视频 | 欧美又粗又大aaa片 老熟妇仑乱视频一区二区 亚洲妇女体内精汇编 | 男男免费视频 | 91美女视频 | 在线爽 | 一本色道久久综合精品婷婷 | 亚洲17p |