Java面试宝典:从基础到架构18
第18章 分库分表与数据架构
面试频率: ★★★★☆
当单表数据量超过千万,查询性能急剧下降,这时候就需要分库分表。面试官会问:“什么时候分库分表?”“分库分表有哪些方式?”“分片键怎么选?”“跨库查询怎么办?”"分库分表后怎么做分布式事务?"这章咱们就把分库分表核心考点讲透。
18.1 为什么要分库分表——单库瓶颈/垂直拆分/水平拆分
单库瓶颈
数据量瓶颈
- 单表数据量 > 1000万,B+树高度增加,查询变慢
- 单库数据量 > 100GB,备份恢复困难
- 单表数据文件 > 50GB,DDL操作耗时
性能瓶颈
- QPS > 5000,单库CPU/IO压力大
- 并发写 > 1000,锁冲突频繁
- 慢SQL影响整体性能
运维瓶颈
- 单库故障影响全部业务
- 备份恢复时间长
- 难以在线DDL
拆分方式
1. 垂直拆分
垂直分库: 按业务拆分到不同库。
拆分前: