6 个回答
分库分表可能遇到的问题:
1、事务问题:需要用分布式事务
2、跨节点 Join 的问题:解决这一问题可以分两次查询实现
3、跨节点的 count,order by,group by 以及聚合函数的问题:分别在各个节点上得到结果后在应用程序端进行合并
4、数据迁移,容量规划,扩容等问题
5、ID 问题:数据库被切分后,不能再依赖数据库自身的主键生成机制。最简单可以考虑 UUID
6、跨分片的排序分页问题
发布于:3个月前 (02-08) IP属地:四川省
历史数据迁移问题
分库分表架构落地以后,首要的问题就是如何平滑的迁移历史数据,增量数据和全量数据迁移,这又是一个比较麻烦的事情
发布于:1年前 (2024-03-04) IP属地:未知
多数据库高效治理问题
对多个数据库以及库内大量分片表的高效治理,是非常有必要,因为像某宝这种大厂一次大促下来,订单表可能会被拆分成成千上万个t_order_n表,如果没有高效的管理方案,手动建表、排查问题是一件很恐怖的事。
发布于:1年前 (2024-03-04) IP属地:未知
全局唯一的主键问题
分库分表后数据库表的主键ID业务意义就不大了,因为无法在标识唯一一条记录,例如:多张表t_order_1、t_order_2的主键ID全部从1开始会重复,此时我们需要主动为一条记录分配一个ID,这个全局唯一的ID就叫分布式ID,发放这个ID的系统通常被叫发号器。
发布于:1年前 (2024-03-04) IP属地:未知
事务一致性
分库分表后由于表分布在不同库中,不可避免会带来跨库事务问题。后续会分别以阿里的Seata和MySQL的XA协议实现分布式事务,用来比较各自的优势与不足。
发布于:1年前 (2024-03-04) IP属地:四川省
分页、排序、跨节点联合查询问题
分页、排序、联合查询,这些看似普通,开发中使用频率较高的操作,在分库分表后却是让人非常头疼的问题。把分散在不同库中表的数据查询出来,再将所有结果进行汇总合并整理后提供给用户。
比如:我们要查询11、12月的订单数据,如果两个月的数据是分散到了不同的数据库实例,则要查询两个数据库相关的数据,在对数据合并排序、分页,过程繁琐复杂。
发布于:1年前 (2024-03-04) IP属地:未知
我来回答
您需要 登录 后回答此问题!