sharding-jdbc綁定表和公共表


綁定表:
  指分片規則一致的主表和子表。例如: 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(1011);
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(1011);
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(1011);
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(1011);

在配置綁定表關系后,路由的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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM