繫結表:
指分片規則一致的主表和子表。例如: t_order 表和 t_order_item 表,均按照 order_id 分片,繫結表之間的分割槽鍵完全相同,則此兩張表互為繫結表關係。繫結表之間的多表關聯查詢不會出現笛卡爾積關聯,關聯查詢效率將大大提公升。舉例說明,如果sql為:
select i.*from t_order o join t_order_item i on o.order_id=i.order_id where o.order_id in (10,11);
在不配置繫結表關係時,假設分片鍵 order_id 將數值10路由至第0片,將數值11路由至第1片,那麼路由後的sql應該為4條,它們呈現為笛卡爾積:
select i.*from t_order_0 o join t_order_item_0 i on o.order_id=i.order_id where o.order_id in(10, 11
);select i.*
from t_order_0 o join t_order_item_1 i on o.order_id=i.order_id where o.order_id in(10, 11
);select i.*
from t_order_1 o join t_order_item_0 i on o.order_id=i.order_id where o.order_id in(10, 11
);select i.*
from t_order_1 o join t_order_item_1 i on o.order_id=i.order_id where o.order_id in(10, 11);
在配置繫結表關係後,路由的sql應該為2條:
select i.*from t_order_0 o join t_order_item_0 i on o.order_id=i.order_id where o.order_id in(10, 11
);select i.*
from t_order_1 o join t_order_item_1 i on o.order_id=i.order_id where o.order_id in(10, 11);
配置方式:
# 設定繫結表spring.shardingsphere.sharding.binding
-tables = t_order,t_order_item
公共表
公共表屬於系統中資料量較小,變動少,而且屬於高頻聯合查詢的依賴表。參數列、資料字典表等屬於此型別。可以將這類表在每個資料庫都儲存乙份,所有更新操作都同時傳送到所有分庫執行。接下來看一下如何使用sharding-jdbc實現公共表
# 指定t_dict為公共表spring.shardingsphere.sharding.broadcast
-tables=t_dict
#指定 t_udict 表中主鍵的生成策略 snowflake:雪花演算法spring.shardingsphere.sharding.tables.t_dict.key-generator.column = id
spring.shardingsphere.sharding.tables.t_dict.key-generator.type =snowflake
sharding jdbc 分庫分表
sharding官網 環境 jdk8,springboot jpa sharding jdbc 實現分表分庫 導包 io.shardingsphere sharding jdbc spring boot starter 3.1.0 io.shardingsphere sharding jdbc sp...
sharding jdbc分庫分表
1.gradle構建方式載入依賴包 compile group io.shardingsphere name sharding jdbc core version 3.0.0 2.testsourceconfiguration檔案類配置資料庫 configuration public class t...
分庫分表和sharding jdbc
關係型資料庫在大於一定資料量的情況下效能會急劇下降。在面對網際網路海量資料的情況時,所有資料都存於一張表,顯然很容易會達到資料表可承受的資料量閾值。單純分表雖然可以解決資料量過大導致檢索變慢的問題,但無法解決高併發情況下訪問同乙個庫,導致資料庫響應變慢的問題。所以通常水平拆分都至少要採用分庫的方式,...