电商系统分库分表详细规划方案
整合MySQL、Redis及Saga事务
一、核心业务分库分表策略
垂直拆分
订单库:拆分为订单主表(订单ID、金额、状态)和订单详情表(物流信息、商品快照),通过order_id关联
商品库:按类目拆分高频访问类目(如3C/服饰)独立分库,历史商品归档至冷库
用户库:用户基础信息与扩展信息分离,敏感字段(如密码)独立加密存储
水平拆分
订单表:按user_id % 64分16库(每库4表),支持用户维度的订单聚合查询
商品表:按category_id分8库,热门类目单独分库(如3C类目独立3个库)
购物车表:按user_id分片,与订单库同分片规则减少跨库事务
二、Redis整合方案
热点数据缓存
用户会话:存储用户登录态及权限,采用Redis Cluster分片,过期时间24小时
商品详情:缓存SKU基础信息(如价格、库存),设置30秒~5分钟滑动过期
购物车临时数据:未登录用户购物车数据存储7天,采用Hash结构存储
分布式锁与计数器
秒杀库存:通过Redis原子操作DECR扣减库存,配合Lua脚本防超卖
分布式ID生成:使用Redis号段分配器,每业务预留10万ID区间
三、分布式事务(Saga模式)