分库分表优缺点及存在的问题

 

 

 

 

分库分表的中间件常见的问题:

 

 

1、 扩容不方便(在增加数据库实例的时候,需要重分布数据)

2、 分布键变更很麻烦(刚开始需要买家id,后面又要根据卖家id查询时)

3、 分布键选择(架构设计)需要谨慎,甚至很多sharding产品不支持多个分布键、或者不支持随机分布,导致业务不得不使用没有任何意义的自增序列来作为分布键。

4、 无法支持复杂查询。跨库JOIN性能差,甚至只能按分布键JOIN,其他字段不支持JOIN。(因为这种产品架构数据节点之间是孤岛,数据需要在孤岛之间交互,需要通过上层的中间件节点,而这样的话,如果有跨库JOIN,就需要将数据收到中间件节点再JOIN,性能差是可想而知的,甚至打爆中间节点。)

5、 当需要写入、返回大量结果集时,可能把中间件打爆。可能性非常大。

6、 分布式事务性能差,甚至不支持分布式事务。

7、 由于各个数据节点各自为政,实际上这种模式带来的SQL限制多、功能缺失多

8、 SQL功能缺失,导致应用改造成本巨大,(实际上就是限制多)。

9、 全局一致性时间点恢复几乎不可实现,不同的数据节点处于不同的状态,没有一个全局统一的快照管理和恢复机制。

10、传统分库分表最大的问题实际上还是孤岛问题,导致了一系列的问题

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库分库分表是一种常见的数据库架构设计,它将一个大型数据库拆分成多个小型数据库,每个小型数据库又可以进一步拆分成多个表。这种架构设计的优缺点如下: 优点: 1. 提高了系统的可扩展性:通过分库分表,可以让系统具有更好的水平扩展能力,可以根据需要增加更多的数据库或表,从而提高系统的性能和吞吐量。 2. 提高了系统的可靠性:通过分库分表,可以将数据分散存储在多个独立的数据库和表中,一旦其中一个数据库或表发生故障,可以快速切换到其他可用的数据库或表来保证系统的可靠性。 3. 降低了系统的负载:通过分库分表,可以将不同的数据存储在不同的数据库或表中,使得每个数据库或表的负载更加均衡,从而降低了系统的负载,提高了系统的性能和稳定性。 缺点: 1. 增加了系统的复杂性:通过分库分表,需要考虑许多因素,如数据迁移、数据一致性、跨库查询等,这些都会增加系统的复杂性。 2. 需要更多的硬件资源:通过分库分表,需要更多的数据库服务器和存储设备来支持分布式存储,这会增加系统的成本和运维难度。 3. 不支持跨库事务:通过分库分表,每个数据库或表都是独立的,无法支持跨库事务,这会增加系统的开发难度和复杂性。 综上所述,数据库分库分表具有许多优点,但也存在一些缺点,需要根据具体的业务需求和技术条件来决定是否采用这种架构设计。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值