分布式数据库设计:分库分表与读写分离 分库分表基础 为什么需要分库分表? 单表数据量过大: 查询性能下降 索引效率降低 锁竞争严重 单库连接数有限: MySQL 默认 maxconnections=151 高并发下连接池耗尽 磁盘空间限制: 单表文件过大 备份恢复时间长 分库分表策略 垂直拆分 垂直分库:按业务拆分 垂直分表:按字段拆分 水平拆分 水平分库:数据分散到多个库 水平分表:数据分散到多个表 分片算法 哈希分片 优点: 数据均匀分布 扩容方便 实现: 范围分片 优点: 查询范围数据高效 便于数据归档 实现: 地理位置 优点: 数据就近访问 降低延迟 实现: 读写分离 架构设计 MySQL 主从复制 配置主库 配置从库 读写分离中间件 ShardingSphere 配置示例: