分库分表原则
单表数据到达千万级别或者20存储空间
优化已经解决不了问题一
IO瓶颈导致性能问题
拆分策略
垂直分库
以表为依据,根据业务将不同的表拆分到不同库中,有点像微服务
垂直分表
以字段为依据,根据字段属性将不同字段拆分到不同表中
拆分规则:把不常用的字段单独放一张表,把大字段text,blob等拆分出来放在附表中
水平分库
将一个库的数据拆分到多个库中
分的库合起来的数据才是所有的数据
可以根据id节点取模或者范围路由查找数据
水平分表
将一个表的数据拆分到多个表中,可以在同一个库中,表名要不一样
优化单一表数据量过大产生的性能问题
分库分表产生的问题
1.分布式事务一致性的问题
一个事务操作数据库提交事务失败了,其它的操作还是成功
2.跨节点关联查询
分完表查询的只是一个表但是数据不完全
3.跨界点分页、排序
还是分表后单表数据不完全的问题
4.主键避重
主键自增,操作多个表存在主键重复问题
分库分表中间件
使用中间件可以解决这些问题
sharding-sphere
mycat
总结