单库单表 拆分为 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,性能下降(如何举证..., 比如磁盘缓存, 控制变量, 两台相同实例的磁盘缓存比单台的实例的磁盘缓存要大, 命中缓存的比率会上升
水平拆分的缺点
实例增加, 成本增加
业务规则导致无法正确连表查询
分布式事务
sharding