articleList

04-Mysql数据库分库分表后的六大问题

2025/03/13 posted in  ShardingJDBC
Tags: 

image-20211124152601687

  • 问题一:跨节点数据库Join关联查询
    • 数据库切分前,多表关联查询,可以通过sql join进行实现
    • 分库分表后,数据可能分布在不同的节点上,sql join带来的问题就比较麻烦
  • 问题二:分库操作带来的分布式事务问题
    • 操作内容同时分布在不同库中,不可避免会带来跨库事务问题,即分布式事务
  • 问题三:执行的SQL排序、翻页、函数计算问题
    • 分库后,数据分布在不同的节点上, 跨节点多库进行查询时,会出现limit分页、order by排序等问题
    • 而且当排序字段非分片字段时,更加复杂了,要在不同的分片节点中将数据进行排序并返回,然后将不同分片返回的结果集进行汇总和再次排序(也会带来更多的CPU/IO资源损耗)
  • 问题四:数据库全局主键重复问题
    • 常规表的id是使用自增id进行实现,分库分表后,由于表中数据同时存在不同数据库中,如果用自增id,则会出现冲突问题
  • 问题五:容量规划,分库分表后二次扩容问题
    • 业务发展快,初次分库分表后,满足不了数据存储,导致需要多次扩容
  • 问题六:分库分表技术选型问题
    • 市场分库分表中间件相对较多,框架各有各的优势与短板,应该如何选择
      image-20211122085932981