数据库面试:分库分表核心原理,面试必问
2026/7/20 10:24:58 网站建设 项目流程

一、为什么需要分库分表?

单表数据超 500w~1000w,索引膨胀、查询变慢;单库 CPU / 磁盘 / 连接数存在硬件上限;大批量更新锁冲突严重。


二、垂直拆分(分库)

按业务模块拆分:用户库、订单库、商品库;

优点:业务隔离,单库压力降低;

缺点:跨库无法 JOIN,需要代码拼接。


三、水平拆分(分表,最常用)

同一表按规则拆多张子表,如 order_0~order_15; 分片规则:

  1. 哈希取模:user_id % 16,均匀分配;
  2. 时间范围分片:按月拆分订单、日志。

四、主流中间件

Sharding-JDBC(客户端,Java 项目首选)、MyCat(代理中间件,多语言通用)。


五、分库分表四大核心难题(面试重点)

  1. 分布式 ID:雪花算法、Redis 自增、数据库号段;
  2. 跨分片分页、排序、聚合:先分片查再内存汇总;
  3. 分布式事务:Seata AT/TCC/SAGA,尽量业务规避跨分片事务;
  4. 多表关联查询:分片键一致可关联,否则代码合并。

六、选型判断

百万以内单表:索引优化、读写分离即可,无需分片; 千万级流水、订单、日志:必须水平分表。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询