Java猿社区—ShardingSphere之广播表与绑定表
概念
逻辑表:水平拆分的数据库(表)的相同逻辑和数据结构表的总称。例:订单数据根据主键尾数拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order。
真实表:在分片的数据库中真实存在的物理表。即上个示例中的t_order_0到t_order_9。
数据节点:数据分片的最小单元。由数据源名称和数据表组成,例:ds_0.t_order_0。
绑定表——联表查询防止出现笛卡尔积现象
绑定表: 指分片规则一致的主表和子表。
例如: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