news 2026/4/23 14:48:15

MySQL 分库分表全攻略:策略、演进路径与避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 分库分表全攻略:策略、演进路径与避坑指南

文章目录

    • 一、常见的分库分表策略包括:
      • 1)水平分表(Row-based Sharding)
      • 2)垂直分表(Column-based Split)
      • 3)水平分库(Database Sharding)
      • 4)垂直分库(Business-based Split)
    • 二、四种分库分表对比速记表(面试杀器)
    • 三、第一步:垂直分表(最温和、最先做)
      • 1️⃣ 场景判断
      • 2️⃣ 表结构拆分
        • 设计要点
      • 3️⃣ Java 层怎么查?
    • 四、第二步:水平分表(真正的性能拐点)
      • 1️⃣ 场景判断
      • 2️⃣ 分表策略
      • 3️⃣ ShardingSphere 配置示例
      • 4️⃣ 插入 & 查询
    • 四、第三步:垂直分库(系统级演进)
      • 1️⃣ 场景判断
      • 2️⃣ 分库方案
      • 3️⃣ 服务拆分
    • 五、第四步:水平分库 + 分表(高并发终极形态)
      • 订单库升级
    • 六、分库分表带来的“坑”(面试必问)
      • 1️⃣ 跨库 Join 怎么办?
      • 2️⃣ 分布式事务?
      • 3️⃣ 主键 ID 怎么生成?

一、常见的分库分表策略包括:

1)水平分表(Row-based Sharding)

同一张表的数据按行拆分到多张结构相同的表中,常见按某个分片键(如user_id)取模或区间划分。

示例:
user_0user_1user_2……

适合:单表数据量过大


2)垂直分表(Column-based Split)

将一张表的不同字段拆分到多张表中,每张表存储部分字段,通常按照访问频率或字段体量拆分。

示例:

  • user_base(id、name、phone)

  • user_profile(avatar、intro、address)

适合:字段多、宽表、冷热数据明显


3)水平分库(Database Sharding)

相同表结构的数据分散到多个数据库实例中,每个库都包含完整表结构,用于分摊读写压力。

示例:
db_user_0db_user_1

适合:并发高、单库 QPS 扛不住


4)垂直分库(Business-based Split)

按照业务模块或功能维度将数据拆分到不同数据库中,不同库之间的表结构通常不同。

示例:

  • 用户库

  • 订单库

  • 支付库

适合:业务复杂、模块解耦


二、四种分库分表对比速记表(面试杀器)

类型拆分维度解决什么问题是否改变表结构
水平分表单表数据量大
垂直分表表太宽、字段多
水平分库数据量 / 并发单库性能瓶颈
垂直分库业务模块系统解耦、扩展性

📌一句口诀

行多用水平,列多用垂直;
库扛不住再分库,业务复杂先垂直。


三、第一步:垂直分表(最温和、最先做)

1️⃣ 场景判断

用户表字段 40+,而 80% 查询只用到基础信息。

📌这是典型“宽表”问题


2️⃣ 表结构拆分

user_base-id-username-phone-status-create_time user_profile-user_id-avatar-address-intro-birthday
设计要点
  • user_base高频访问

  • user_profile低频访问

  • 一对一,用user_id关联

🧠收益

  • 索引更小

  • 查询更快

  • 热数据更集中


3️⃣ Java 层怎么查?

UserBasebase=userBaseMapper.selectById(id);UserProfileprofile=userProfileMapper.selectByUserId(id);

四、第二步:水平分表(真正的性能拐点)

1️⃣ 场景判断

order 表数据量:

1 天:200 万 1 年:7 亿+

🚨 单表必炸

2️⃣ 分表策略

分片键选择

👉 user_id

原因:

查询订单基本按用户查 避免跨表扫描

表设计

order_00 order_01...order_15
user_id%16

3️⃣ ShardingSphere 配置示例

spring:shardingsphere:datasource:names:ds0ds0:type:com.zaxxer.hikari.HikariDataSourcejdbc-url:jdbc:mysql://localhost:3306/order_dbusername:rootpassword:rootrules:sharding:tables:t_order:actual-data-nodes:ds0.t_order_${0..15}table-strategy:standard:sharding-column:user_idsharding-algorithm-name:order-inlinesharding-algorithms:order-inline:type:INLINEprops:algorithm-expression:t_order_${user_id % 16}

📌代码层完全无感知
Mapper 还是t_order


4️⃣ 插入 & 查询

orderMapper.insert(order);// 自动路由orderMapper.selectByUserId(userId);// 精准命中

四、第三步:垂直分库(系统级演进)

1️⃣ 场景判断

  • 用户模块

  • 订单模块

  • 支付模块

强耦合在一个库,影响稳定性


2️⃣ 分库方案

user_db order_db pay_db

🎯一个服务一个库


3️⃣ 服务拆分

  • user-service → user_db

  • order-service → order_db

  • pay-service → pay_db

📌好处

  • 故障隔离

  • 独立扩容

  • 更适合微服务


五、第四步:水平分库 + 分表(高并发终极形态)

订单库升级

order_db_0 order_db_1

每一个库:

t_order_0 ~ t_order_15

路由规则

user_id % 2 → 库 user_id % 16 → 表

六、分库分表带来的“坑”(面试必问)

1️⃣ 跨库 Join 怎么办?

❌ 不支持

✅ 解决方案:

  • 业务聚合

  • 冗余字段

  • ES / Redis 辅助查询


2️⃣ 分布式事务?

❌ 强一致难

✅ 常用方案:

  • 本地事务 + 消息最终一致

  • Seata(慎用)


3️⃣ 主键 ID 怎么生成?

❌ 自增 ID 不行

✅ 方案:

  • 雪花算法

  • 号段模式

  • Redis 原子递增


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 15:46:01

重磅报告解读:2025提示系统市场评估标准出炉,架构师必备

2025提示系统市场评估标准解读:架构师必看的6大维度与实践指南 一、引言:为什么2025提示系统评估标准是架构师的“选型指南针”? “花了50万采购的提示工程平台,上线3个月就成了‘摆设’——要么无法适配我们的电商客服场景,要么响应速度慢到用户投诉,要么和现有CRM系统…

作者头像 李华
网站建设 2026/4/23 12:29:12

基于机器学习的写作工具显著提升学术产出效率,降低重复劳动时间成本

在学术论文撰写过程中,开题报告与正文的高效完成是研究者常见的难题。传统人工撰写模式虽然灵活性较高,但存在效率瓶颈,而现代人工智能技术能够实现内容的快速生成、重复率控制以及文本逻辑优化。实验数据显示,对9种主流智能写作平…

作者头像 李华
网站建设 2026/4/23 12:31:35

No.978 三菱PLC与组态王4层电梯控制系统的设计与实现

No.978 三菱PLC和组态王4层电梯四层电梯控制系统的设计与实现最近在折腾一个四层电梯的控制系统项目,用三菱FX3U PLC当大脑,组态王做监控界面。这玩意儿看起来简单,实操起来可都是坑。今天就跟大伙唠唠这个项目的实战细节,特别是那…

作者头像 李华
网站建设 2026/4/23 12:31:16

仿真工程师十年演进(2015–2025)

仿真工程师十年演进(2015–2025) 一句话总论: 2015年仿真工程师还是“实验室Gazebo脚本工低保真物理建模手动调参”的小众CAE角色,2025年已进化成“亿级并行集群架构师大模型场景生成专家量子噪声域随机化设计师自进化仿真闭环运维…

作者头像 李华
网站建设 2026/4/18 20:54:01

机器人驱动器十年演进(2015–2025)

机器人驱动器十年演进(2015–2025) 一句话总论: 2015年驱动器还是“集中式进口IGBT有感霍尔PID规则控制”的刚性工业时代,2025年已进化成“分布式一体化全电驱无感高精度端到端VLA大模型电流直出量子级扰动自愈”的具身智能时代&a…

作者头像 李华