日韩性视频-久久久蜜桃-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 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 午夜久| 亚洲精品影院在线 | 丝瓜色版 | 99国产精品99久久久久久 | 少妇特黄a一区二区三区88av | 99国产在线观看 | 色精品视频 | 美女在线不卡 | 国产精品成人一区二区网站软件 | 五月天中文字幕av | 午夜视频免费在线 | 午夜寂寞院 | 在线播放日韩 | 亚洲性网| 亚洲福利网址 | 黄网站色视频免费观看 | 亚洲精品无人区 | 黑人一区二区三区四区五区 | 欧美日本精品 | 久草视频这里只有精品 | 在线免费黄| 在线观看黄网 | www.白丝 | 91九色pron| 一级片a级片 | 色一区二区三区 | 欧美| 91网站免费观看 | 国产5区 | 国产日b视频 | 国产精品视频一区二区三区在3 | 福利视频在线播放 | 欧美日韩国产免费一区二区三区 | jizzjizz中国精品麻豆 | 特黄av| 美女网站黄页 | 影音先锋欧美资源 | 中文字幕一级二级三级 | 亚洲国产精彩视频 | 欧美日韩中文字幕一区二区三区 | 免费国产一区 | 蝌蚪自拍网站 | 在线中文字幕一区 | 看毛片的网址 | 日韩专区欧美专区 | av中文字幕一区 | 国产精品乱码一区 | 波多野结衣一区二区三区中文字幕 | 久久一区二区三区视频 | 伊人国产在线视频 | 午夜寻花| 91免费视 | 日本一区二区高清免费 | 日韩少妇一区二区 | 久久精品久 | 美女av影院 | 亚欧在线视频 | 国产日韩欧美另类 | 少妇高潮视频 | 九九热视频在线免费观看 | 国产欧美一区二区精品忘忧草 | 亚洲av无码乱码在线观看富二代 | av动态| 麻豆视频网站入口 | 国产又粗又猛又爽免费视频 | av中文资源网 | 黄色三级网站在线观看 | 欧洲美女毛片 | 国产一区二区小视频 | 国产精品女主播 | 成人深夜福利在线观看 | 欧美日韩一区二区在线播放 | 欧美一区二区三区大屁股撅起来 | 女同亚洲精品一区二区三 | 欧美一级黄色片在线观看 | 一个色综合网站 | 亚洲天天综合 | 五月天激情国产综合婷婷婷 | 黄色三级网站在线观看 | 成年人深夜福利 | 九九国产视频 | 国产日韩精品中文字无码 | 性色AV无码久久一区二区三 | 美女扒开内裤让男人桶 | 在线亚洲一区 | 久久午夜无码鲁丝片 | 亚洲69 | 色婷婷av一区二区三区在线观看 | 不卡久久 | 免费在线一区二区三区 | 色狠狠综合| 国产乱淫av免费 | 久久大| 伊人黄色片| 午夜精产品一区二区在线观看的 | 欧美色图13p | av剧情在线 | 欧美日韩日本国产 | 无遮挡在线观看 |