数据库分库分表架构设计指南:从单表到百亿级数据的演进之路

引言:为什么需要分库分表? MySQL 单表性能瓶颈: 数据量:单表超过 1000 万行,查询性能显著下降 索引大小:索引树高度增加,磁盘 I/O 增多 锁竞争:高并发下锁等待严重 备份恢复:单表过大,备份耗时长 分库分表是突破单机数据库瓶颈的有效手段,但它也带来了复杂的路由逻辑和运维成本。本文将系统地介绍分库分表的实践方案。 一、垂直拆分 vs 水平拆分 1.1 垂直拆分(按业务维度) 单体数据库: ┌─────────────────────────────────────────┐ │ single_database │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ user │ │ order │ │ product │ │ │ └─────────┘ └─────────┘ └─────────┘ │ └─────────────────────────────────────────┘ ↓ 垂直拆分 ┌─────────┐ ┌─────────┐ ┌─────────┐ │user_db │ │order_db │ │product_db│ │ │ │ │ │ │ │ user │ │ order │ │ product │ │ profile │ │ payment │ │ inventory│ └─────────┘ └─────────┘ └─────────┘ 优点: ...