久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何使用MyCat分表分庫原理分析

157次閱讀
沒有評論

共計 1239 個字符,預計需要花費 4 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家分享的是有關如何使用 MyCat 分表分庫原理分析的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考。一起跟隨丸趣 TV 小編過來看看吧。

MyCat 是一個開源的分布式數據庫系統,是一個實現了 MySQL 協議的服務器,前端用戶可以把它看作是一個數據庫代理,用 MySQL 客戶端工具和命令行訪問,而其后端可以用 MySQL 原生協議與多個 MySQL 服務器通信,也可以用 JDBC 協議與大多數主流數據庫服務器通信,其核心功能是分表分庫,即將一個大表水平分割為 N 個小表,存儲在后端 MySQL 服務器里或者其他數據庫里。

Mycat 可以實現 讀寫分離 分表分庫

主從復制是 MySQL 自帶的哈~

關于分片取模算法:  根據 id 進行取模   根據數據庫集群的數量(或者說是表數量,mycat 里面一個表對應一個庫)

使用 MyCat 分表分庫原理分析

Mycat 中的路由結果是通過分片字段和分片方法來確定的, 如果查詢條件中有 id 字段的情況還好,查詢將會落到某個具體的分片。如果查詢沒有分片的字段,會向所有的 db 都會查詢一遍,讓后封裝結果級給客戶端。

修改 /mycat/conf/log4j2.xml 日志級別為 debug

比如:

在查詢

select * from user_info

發送三個 db 請求

如果是查詢素有的情況下(不帶條件)

轉換成為:

select * from db1.user_info
select * from db2.user_info
select * from db3.user_info

最后把結果集給 mycat 進行封裝 然后返回給客戶端

如果加個 where id = 1   這樣帶條件的情況下  mycat 會進行轉換 1%3=1   在 db2 上!轉換成 select * from db2.user_info where id = 1 如果查詢的是分片的話,效率很高。發送一條就搞定

如果不是分片字段的話   會發送三條哦!效率很低

比如 where name =‘jack’會發送三條 根據條件去每個數據庫里面進行查詢 返回結果

tailf -200f mycat.log: 進行實時的查看

然后迅速的查詢   一目了然

注意分頁查詢:

select * from user_info limit 0,2

到底是哪個數據分片的?

往三個庫里面發三個 select 請求   獲取三對 六條結果

隨機抽取一對返回給客戶端

如果加了排序的條件呢?

 select * from user_info order by id limit 0,2(相當于取出最大的兩條數據)

先發送三個 select 每個都是最大的兩條 然后返回給 mycat   進行綜合評選拿出最大的倆 返回給客戶端

如果是

 select * from user_info limit 0,3

每次請求返回的都是在改變的 是隨機的!

db1 取兩條 db2 和 db3 隨機一條

感謝各位的閱讀!關于如何使用 MyCat 分表分庫原理分析就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-18發表,共計1239字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宁城县| 镇原县| 海伦市| 襄汾县| 修武县| 鹤壁市| 九江县| 鹿邑县| 利辛县| 泗洪县| 同仁县| 宜阳县| 神池县| 万州区| 资兴市| 阿坝| 天等县| 二连浩特市| 泽普县| 广灵县| 百色市| 镇坪县| 淳安县| 海门市| 富民县| 武定县| 深州市| 昌平区| 彭泽县| 桦甸市| 勃利县| 怀来县| 翼城县| 芒康县| 宜良县| 依兰县| 酉阳| 德昌县| 昆山市| 雅江县| 信丰县|