全部产品
云市场

分库分表问题

更新时间:2019-12-26 17:34:18

常见分库分表问题列表:

分库分表是否支持多个拆分字段

数据访问代理分库分表功能支持多个拆分字段,但是如果配置了拆分字段,后续执行 SQL 均需要加上拆分字段的查询条件。所以建议尽量使用单个拆分字段,减少 SQL 使用场景限制。

例如,如果根据 ID 字段进行拆分,后续执行 SQL 都需要带上 WHERE ID=? 过滤条件,否则会出现 Table rule execute error 错误。

分库分表是否支持跨库 JOIN

数据访问代理暂不支持分库分表场景下的跨库 JOIN 功能,仅支持同一个分片下的 JOIN SQL。假设有一条 JOIN SQL SELECT * FROM user as u INNER JOIN join_table as j ON u.id = j.user_id,那么针对以下两种情况,处理方式有所不同。

  • 如果 JOIN 表存在分库分表规则,JOIN 时 JOIN 表的后缀和 FROM 表保持一致:SELECT * FROM user_00 as u INNER JOIN join_table_00 as j ON u.id = j.user_id
  • 如果 JOIN 表无分库分表规则,JOIN 时 JOIN 表保持原样,不做表名替换:SELECT * FROM user_00 as u INNER JOIN join_table as j ON u.id = j.user_id

分库分表对拆分库表的数量是否有限制

数据访问代理不限制拆分库表的数量,但分库分表的整体数量受后端数据节点的规格限制,请根据业务场景合理设计分库分表的拆分数量。