mycat學習 4 分片JOIN,分片規則

2021-08-16 06:27:03 字數 1929 閱讀 4760

mycat 支援跨分片join,主要有四種方法:

1、全域性表

字典表(變動不頻繁,資料量總體變化不大,資料規模不大很少超過10w條記錄)可以做為全域性表

特性:1)全域性表的插入,更新操作會實時在所有節點上執行,保持各個分片的資料一致性。沒有太激烈的update操作。

2)全域性表查詢只從乙個節點獲取

3)全域性表可以和任何乙個表進行join操作

4) 多執行緒update 可以不是同一條記錄,如果多執行緒udpate 全域性表同一條記錄會出現死鎖,批量insert 是可以的。

配置:不用寫rule規則,要在所有節點為執行ddl語句

2、er分片

借鑑了foundation db

的設計思路,將子表的儲存位置依賴於主表,並且物理上堅信存放,因此徹底解決了join的效率和效能問題。根據這一思路,mycat 提出了e-r 關係的資料分片策略,子表的記錄與所關聯的父表記錄存放在同乙個資料分片上。

有一類業務,比如訂單(order)和訂單明細(order_detail),明細表會依賴訂單表,也就是說存在表的主從關係。這類表適用於er分片表,子表的記錄與所關聯的父表記錄存放在同乙個分片上,避免資料的join跨庫操作。

schema.xml 配置:

以order與order_detail 為例,schema.xml 中定義如下分片配置,order、order_detail 根據order_id 進行資料分片,保證相同的order_id的資料分到同乙個分片上,在進行資料插入操作時,mycat會獲取order所在在分片,然後將order_detail 也插入到order所在的分片。

3、catlett(人工智慧)

mycat提供api ,通過程式設計解決業務系統中特定幾個必須跨分片的sql 的join 邏輯。

4、sharejoin

sharejoin 是乙個簡單的跨分片 join,基於 hbt 的方式實現。目前支援 2 個表癿的join,原理就是解析 sql 語句,拆分成單錶的 sql 語句執行,然後把各個節點的資料匯集。

sharejoin 在開發,前三種1.3.0.1 支援。

分片規則:

1、全域性表

2、er分片

3、多對多關聯

有一種業務是「主表a+關係表+主表b」,比如說:商戶+訂單+會員。

會員要查詢購買的訂單,商戶要查詢售出的訂單,那麼要做如何的切分。目前總的原則是需要從業務角度來看,關係表更偏向哪個表,即是「a的關係」還是「b的關係」,來決定關係表跟從那個方向儲存。

4、主鍵與非主鍵分片

如果沒有任何字段可以作為分片欄位的時候,主鍵分片就是唯一選擇,其優點是按照主鍵的查詢最快,當採

用自自增長的序列號作為主鍵時,還能比較均勻的將數捤分片在不同的節點上。

若有某個合適的業務字段比較合適作為分片字段,則建議採用此業務字段分片,選擇分片欄位的條件如下:

1、盡可能的比較均勻分布數捤到各個節點上;

2、該業務欄位是最頻繁的或者最重要的查詬條件。

當選擇到了合適的業務字段作為分片規則的時候,不要擔心「犧牲了主鍵的查詢效能」,加為mycat 提供了「主鍵到分片」的快取機制。按照主鍵查詢不會損失效能。

對於非分片的table,填寫primarykey,此時mycat 會將根據主鍵查詢的sql語句的第一次執行結果進行分析,確定該table的某個主鍵在什麼分片上,並把「主鍵-->分片」快取。以後查詢時會先查詢快取中是否有「主鍵-->分片」的對映,如果有直接查詢,從而提高了非主鍵分片的查詢效能。

mycat 效能建議

1、使用inner join ,盡量避免使用left join ,right join

2、使用left join,right join時 on條件會先執行,where條件會後執行。在使用時,條件盡量寫的on後面,減少where的執行

3、少用子查詢,用join

Mycat快速入門 四 分片規則

在資料切分處理中,特別是水平切分中,中介軟體最終要的兩個處理過程就是資料的切分 資料的聚合。選擇 合適的切分規則,至關重要,因為它決定了後續資料聚合的難易程度,甚至可以避免跨庫的資料聚合處理。可以通過全域性表,er分片表,資料冗餘來盡量來避免跨庫多表連線join。所謂全域性表就是該錶在每個分片上都會...

redis學習記錄08 分片

redis的分片 sharding或者partitioning 技術是指將資料分散到多個redis例項中的方法,分片之後,每個redis擁有一部分原資料集的子集。在資料量非常大時,這種技術能夠將資料量分散到若干主機的redis例項上,進而減輕單台redis例項的壓力。分片技術能夠以更易擴充套件的方式...

讀書筆記 Mycat權威指南 10 分片規則

分片規則概述 在資料切分處理中,特別是水平切分中,中介軟體最終要的兩個處理過程就是資料的切分 資料的聚合。選擇 合適的切分規則,至關重要,因為它決定了後續資料聚合的難易程度,甚至可以避免跨庫的資料聚合處理。前面講了資料切分中重要的幾條原則,其中有幾條是資料冗餘,表分組 table group 這都是...