数据库面试:分库分表核心原理,面试必问

📅 2026/7/20 10:25:07
数据库面试:分库分表核心原理,面试必问
一、为什么需要分库分表单表数据超 500w~1000w索引膨胀、查询变慢单库 CPU / 磁盘 / 连接数存在硬件上限大批量更新锁冲突严重。二、垂直拆分分库按业务模块拆分用户库、订单库、商品库优点业务隔离单库压力降低缺点跨库无法 JOIN需要代码拼接。三、水平拆分分表最常用同一表按规则拆多张子表如 order_0~order_15 分片规则哈希取模user_id % 16均匀分配时间范围分片按月拆分订单、日志。四、主流中间件Sharding-JDBC客户端Java 项目首选、MyCat代理中间件多语言通用。五、分库分表四大核心难题面试重点分布式 ID雪花算法、Redis 自增、数据库号段跨分片分页、排序、聚合先分片查再内存汇总分布式事务Seata AT/TCC/SAGA尽量业务规避跨分片事务多表关联查询分片键一致可关联否则代码合并。六、选型判断百万以内单表索引优化、读写分离即可无需分片 千万级流水、订单、日志必须水平分表。