Sharing-jdbc分库分表功能
ShardingSphere 官方文档
ApacheShardingSphere通过提供多样化的表类型,适配不同场景下的数据分片需求。
逻辑表
相同结构的水平拆分数据库(表)的逻辑名称,是SQL中表的逻辑标识。例如订单数据根据主键尾数拆分为10张表分别是t_order_0 到 t_order_9他们的逻辑表名为t_order。
真实表
在水平拆分的数据库中真实存在的物理表,即上个示例中的t_order_0到t_order_9.
绑定表
指分片规则一致的主表和子表。 例如t_order表和t_order_item表是主表和字表关系,两张表都是按照order_id做数据存储分片,这样的两张表就可以配置为绑定表。
绑定表的配置是为了解决关联查询出现笛卡尔积的问题,进而提升查询性能。
举例说明,如果库中t_order表分为t_order_0和t_order_1两个分表,查询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路由至t_order_0,将数值11路由至t_order_1,那么路由后的真实SQL应该为4条,它们呈现为笛卡尔积。
SELECT i.* FROM t_order_0 o JOIN t_order_item_0 i ON