单库单表 拆分为 N个库N个表
分为垂直拆分,水平拆分
什么是垂直拆分
按结构(表头/约束)拆分
垂直拆库
把单库中的不同业务的表, 拆分到不同库中
比如 原本单库的 用户表, 订单表
将用户表相关的表放到同一个库中...A库
将订单相关的表放到同一个库中 B库
垂直拆表
把表中的多个字段, 拆出来部分字段放到另一个表中
比如
A库B表的一行, 有 1 2 3 4 5 列
把 1 2 3 4 列 拆出来放到 A库...与微服务治理类似,便于集中管理,监控,扩展
高并发情况下提升IO,数据库连接数,单机硬件资源瓶颈
垂直拆分缺点
多表join
分布式事务处理复杂
单表数据总量无法解决(水平切分处理)
什么是水平拆分
按内容拆分...将1w行, 按照id的奇偶分成两个库, 奇数插入到A库的b表, 偶数插入到C库的b表
(b表的结构是一样的)
就是按照id的内容进行了拆分
水平拆分的优点
提高查询性能, 单表超过2kw,性能下降...看代码实现的思路
数据倾斜问题
一致性hash算法 + 权重配置
看代码实现的思路
todo
读写分离特性问题探讨
查询优化
sharding-proxy代理分享
注意点
读写分离
没有事务时, 根据SQL