一、ShardingSphere基础 分库分表

1、为何要分库分表?

        常规在未进行分库分表的情况下,随着时间的推移,表中的数据量会越来越多,即表越来越大。

        最终会导致:

  •  一台服务器的资源不足
  • 库中的表越来越多,表中的数据量越来越大
  • 增删改查的开销越来越大

2、如何优化?

        分库分表

3、垂直拆分、水平拆分

3.1、垂直拆分

        垂直拆分数据库是指按照业务将表进行分类,部署到不同的数据库上面去,这样就能将数据(压力)分担到不同的数据库上面去。

例如:将商品、订单、用户的表分别拆到不同的库中,通过降低单库的大小来提高性能。但这种仍然存在大数据量带来的性能损耗。

        垂直拆分表就是将一个大表根据业务功能拆分成多个子表。

例如:将用户表根据业务拆分成基本信息表和详细信息表。

         缺点:

        1、不解决大数据量带来的性能损耗,读写压力还是很大。

        2、不同的业务无法跨库关联(join),只能通过业务来关联。

3.2、水平拆分

        水平拆分是按照表中的某个或者多个字段按照一定的规则来分散到多个库或者表中,每个表中包含一部分数据。

例如:按照时间或者id进行拆分。比如根据用户id来拆分到不同的数据库(或者表),每个数据库和表结构一致。

3.3、垂直拆分对比水分拆分 

垂直拆分

水平拆分

特点
  • 规则简单,实施方便

  • 业务之间的耦合度非常低,相互影响很小

  • 根据不同的表来进行拆分,对应用程序的影响也更小

  • 将同一个表中的不同数据拆分到不同的数据库

  • 对于应用程序来说,表的命名比垂直拆分复杂

  • 后期的数据维护也会复杂

优点
  • 系统之间整合或扩展容易

  • 拆分后业务清晰,拆分规则明确

  • 数据维护简单

  • 拆分规则抽象好,Join操作基本可以数据库做

  • 不存在单库大数据,高并发的性能瓶颈。

  • 应用端改造较少。

  • 提高了系统的稳定性跟负载能力。

缺点
  • 部分业务表无法Join,只能通过接口方式解决,提高了系统复杂度。

  • 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高。

  • 事务处理复杂。

  • 拆分规则难以抽象。

  • 分片事务一致性难以解决。

  • 数据多次扩展难度跟维护量极大。

  • 跨库Join性能较差。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值