理解mysql_分库分表的一些认识

垂直切分:
垂直分表: 将原有表中的字段拆分成多个表
垂直分库: 微服务中盛行, 每个业务子系统有自己独立的数据库。
好处:结构清晰
缺点:增加系统复杂度,需要各个系统对外暴露接口。

水平切分:
水平分表: 表结构一致。 将原有记录按一定规律拆分到多个相同结构的表里面去。通常是用hash取模的方式来实现。
水平分库分表: 将相同表结构分拆到不同数据库里面去。

分库分表带来的问题和解决方案:
● 主键id的问题
采用单库单表的id生成规则,会出现主键冲突的情况。 即要兼顾索引性能、又要考虑唯一。通常的做法有以下几种:
1、借助redis来生成全局唯一的主键id
2、采用64 位UUID做唯一主键
方法2占用空间大,不建议使用。
考虑到路由,在主键信息里面需要包含机器id。
● join查询问题
列表查询不显示总页数,也不做多个表的union,只查询某个表的记录信息。
记录明细查询, 需要在应用程序代码层面上去做适配, 根据主键id去定位需要到哪台设备上去找数据。 前提是要求主键id需要包含机器id。
● 事务控制问题
采用二阶段提交的方式控制事务。涉及到服务服务化提供,需要注意服务提供的幂等性控制。
● 报表统计问题
现在流行的做法是离线分析、流式计算根据模板出报表。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值