mycat是一種非常流行的分布式資料庫中間外掛程式,mycat的作用為滿足資料庫的大量儲存,提高了查詢效能,從架構的角度來理解就是前端使用者可以把mycat看作是乙個資料庫的**,核心功能是分庫分表,即將乙個大表水平分割為n個小表。
mycat的原理是攔截了使用者傳送過來的sql語句,首先對sql語句做一些特定的分析,如分片分析,路由分析,讀寫分離分析,快取分析,然後將此sql傳送到後端真實的資料庫,主要的配置檔案是rule.xml, schema.xml和server.xml。
資料庫的分片是指通過某種特定的條件,將我們存放在乙個資料庫中資料分散到不同的資料庫中,有兩種切片方式,一種是水平切分,一種是垂直切片,水平切片是指將同乙個表中的資料切分到不同的資料庫中,垂直拆分比較簡單,按業務角度拆分成多個庫,即原來庫里的不同分別放到不同的庫中。
分庫分表的方案:hash取模和range範圍方案;分庫分表方案最主要的就是路由演算法,把路由的key按照指定的演算法進行路由存放。
1、hash取模演算法
在設計系統之前,可以估計一下大概這幾年的訂單量,如4000萬。每張表可以容納1000萬,我們可以設計4張表進行儲存。具體的實現過程如下圖所示:
訂單資料可以可以均勻分布,不會有熱點問題。
將來的資料遷移和擴容,會比較困難。
2、range範圍方案
這種方案就是以範圍對資料進行拆分,具體實現過程如下圖所示,非常好理解。
有利於將來的擴容,不需要進行資料的遷移
有熱點問題,如果要查詢乙個範圍內的資料,只會集中在一張表中。
3、總結
上面的兩種方案有他們各自的優點與缺點,能不能結合他們的優點,做出分庫分表最好的方案呢?即不需要遷移資料,又能解決資料熱點的問題呢?
Mycat分庫分表
schema.xml 配置 name dn1 datahost localhost1 database db1 name dn2 datahost localhost1 database db2 name dn3 datahost localhost1 database db3 把localhost...
mycat分庫分表
一 修改schema.xml select user 二 修改server.xml 0 0 10 011m 1k0 384m true 123456 testdb user testdb true 三 啟動關閉1 進入bin目錄,2 啟動輸入.mycat start。關閉命令 mycat stop ...
mycat分庫分表
mycat是資料庫分庫分表的中介軟體,mycat使用最多的兩個功能是 讀寫分離和分庫分表功能,支援全域性表和e r關係 這兩個比較實用 mycat相當於是乙個 可以將多個實際資料庫組合成乙個完整的虛擬資料庫 我們可以直接訪問mycat的埠,其使用的是mysql原生的協議連線資料庫進行通訊 mycat...