一、分库分表需要考虑的五个问题

分库分表带来的问题

一、分布式事务问题

由于水平拆分,垂直拆分数据表,数据在不同的数据库服务上,必然会存在分布式事务问题。

二、数据关联问题

单库单表用join关联数据表就可以了,分库分表后,也会有数据关联的需求,解决方式有:
   (1)广播表
Sharding JDBC中,广播表是在每一个节点里都保存一份数据。
   (2)冗余部分字段
把一些基础数据,冗余至其他数据表里。但这个会产生数据一致性问题。
   (3)代码组装
通过代码查询的方式,组装关联查询。
   (4)绑定表
对于相互关联的数据节点,通过分片规则将其切分到同一个库中,这样就可以直接使用SQL的JOIN 进行关联查询。

三、分页、排序、函数问题

对于跨数据节点进行分页、排序或者一些聚合函数,筛选出来的仅仅是针对当前节点,比如排序,仅仅能够保证在单一数据节点上是有序,并不能保证在所有节点上都是有序的,需要将各个节点的数据的进行汇总重新手动排序。

四、全局唯一性ID问题

   (1)UUID
   (2)雪花算法

五、历史数据问题

历史数据通过分片规则,初始化到分库数据库中。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分库分表是一种常用的数据库分布式架构设计方法,可以提高数据库的横向扩展性和性能。然而,分库分表也会面临一些问题,包括: 1. 数据一致性:由于数据被拆分到不同的数据库或表中,跨节点的事务管理和数据一致性变得更加困难。需要考虑如何处理分布式事务和跨节点的数据同步。 2. 跨节点查询:在分库分表环境下,跨节点的查询需要在多个数据库或表中执行,并且需要合并和处理查询结果。这可能会导致查询性能下降和复杂的查询逻辑。 3. 数据迁移和维护:当需要扩容或缩减数据库节点时,需要进行数据迁移和重新分片的操作,这可能会导致系统停机时间和数据迁移的复杂性增加。 4. 跨节点事务管理:在跨多个数据库或表的事务中,需要考虑如何保证事务的隔离性、一致性和持久性。这可能需要使用分布式事务管理机制或者重新设计业务逻辑。 5. 数据倾斜:由于数据分布不均匀或者某些热点数据的访问频率较高,可能导致某些数据库或表的负载过大,而其他节点负载较轻。需要采取合适的负载均衡策略来解决数据倾斜问题。 6. 跨节点索引和优化:在分库分表环境下,索引的设计和优化需要考虑跨节点查询的效率。需要根据实际业务场景和查询需求来选择合适的索引策略和优化方法。 以上是一些常见的问题分库分表的实施需要综合考虑业务需求、系统性能和数据一致性等方面的因素,合理设计和规划才能发挥其优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值