MySql-分表分库

为什么要分库分表

  • 超大容量问题;

  • 性能问题;

如何去做到

  1. 垂直切分、 水平切分

    • 垂直分库:解决的是表过多的问题

    • 垂直分表:解决单表列过多的问题

  2. 水平切分; 大数据表拆成小表

拆分策略

水平拆分

  • 一致性hash

  • 范围切分 可以按照ID

  • 日期拆分

拆分后的问题

跨库join的问题

  1. 设计的时候考虑到应用层的join问题。

  2. 在服务层去做调用;

  3. 全局表

    数据变更比较少的基于全局应用的表

  4. 做字段冗余(空间换时间的做法)

    订单表。 商家id 商家名称

    商家名称变更- 定时任务、任务通知

唯一主键的问题

  • 用自增id做主键

  • UUID 性能比较低

  • snowflake

  • mongoDB

  • zookeeper

  • 数据库表

跨分片数据排序分页

分布式事务问题

多个数据库表之间保证原子性 性能问题;

互联网公司用强一致性分布式事务比较少分库分表最难的在于业务的复杂度;

前提: 水平分表的前提是已经存在大量的业务数据。而这个业务数据已经渗透到了各个应用节点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值