垂直切分、水平切分
1、垂直分库,解决库中表太多的问题。
2、垂直分表,解决表中列太多的问题。例如 商品表 包含 产地、二维码 、时间、价格、各个列。分为不同的小表。
水平切分, 大数据表拆分为小表
水平拆分后还是要考虑小标太多 导致库中表太多的问题,要综合考虑是否需要垂直分库。
拆分策略
垂直拆分(er分片) 相关联的表放在一个库
水平拆分
范围拆分 一直性hash 根据某一个属性取模 例如 userId
日期拆分
拆分后带来的问题
1.垮库join的问题
1.设计的时候 考虑应用层的JOIN的问题
2. 通过服务层去做调用
A服务 B 服务
先从A 查结果 然后RPC 传给B 再做拼接
全局表
1、数据变更比较小的基于全局应用
做冗余数据(空间换时间的方法)
垮分片数据排序分页
1.应用层做分配
唯一主键问题
数据库主从同步的原理
主从同步的 延时问题: 心跳检测 检查 同步时间差。 应用层使用redis 写入master时 取的时候 先去redis取 缓存失效再去数据库取 从而导致数据同步时间差。