申专 2021-07-26 20:49 采纳率: 75%
浏览 20

分库分表,,,,详细解说下

能否详细解说下分库分表。
不要简单的说垂直水平这我知道

  • 写回答

1条回答 默认 最新

  • 咕泡-天明 2021-07-26 20:53
    关注

    首先
    img
    垂直(图) 按业务 表结构不一样 ,有一列一样,并集是全量数据
    单库 和 多库
    客户基本信息表,结算信息表,联系人信息表,附件信息表
    客户库,结算库 。。。

    优 业务清晰转库专用,数据维护简单不同业务不同机器;
    缺点 单表数据量大,读写压力大的单个业务往往影响数据库的瓶颈(性能问题),部分业务关联麻烦,join只能通过java程序接口,复杂的提高
    场景 :比如双十一, 商品访问增加,订单insert并发大 ,几百万直接宕机

    img

    水平(图)按数据 表结 构一样 数据不一样 并集是全量数据 id范围 或者 mod 2 保证均衡
    单库 和 多库
    渠道交易流水表 按时间维度 拆成三张 channel_tran channel_tran_month channel_tran_history
    商户费用表 fee_detail_202001 fee_detail_202002 fee_detail_202003... 按月12张
    跑批同步

    垂直多库之后单表数据还大再拆 多个库

    优点:单表/库数据减少 有助于性能提高 ,提高系统稳定性和负载能力(请求不同地),拆分的表结构相同程序改动较少(dto)
    缺点:后期维护扩容、改造、迁移比较麻烦 ,拆分规则很难抽象出来,分片事务的一致性的问题部分业务无法关联,join只能通过java程
    问题:多数据源问题 ,分页,事务,join ,分布式全局ID,
    跨库关联查询(join) : 1冗余字段 ,2跨系统的数据同步(同步方式 canal ,MQ),
    3,全局表(广播表:行名行号表,行政区划表 每个系统存相同的数据)
    4,API,访问接口过滤组装
    分布式事务(一致性)
    本地事务acid特性,跨库预计能成功的情况下,尽量缩短提交的时间差。
    举个例子:团建洗脚 微信群 马上出发,除非上一秒可以下一秒被抓了 ,有一个今天出不来,那就改日 。当然只要心里有兄弟是不是同时也无所谓,今天你1点去的他2点团建也算圆满完成。最终一致性

    排序,分页,函数max min sum count计算
    不同库中 在 同一页出现怎么办呢 ? 先从不同库过滤的并集 再排序分页
    开源中间件帮忙实现
    当然如果你还想了解更多 以文字已经很难继续比如MyCat Sharding-JDBC的落地可以关注我的直播

    评论

报告相同问题?

问题事件

  • 创建了问题 7月26日