news 2026/5/19 20:40:16

MySQL 分库分表详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 分库分表详解

MySQL 在数据量较小时,单库单表通常足够:

  • 单表几十万~几百万数据:基本没问题
  • 单机 MySQL:QPS 也能支撑很高

但随着业务增长,会出现:

  • 查询越来越慢
  • 索引膨胀
  • 磁盘 IO 压力大
  • 主从同步延迟
  • 单机瓶颈
  • 热点写入

这时就需要:

  • 分表(Sharding Table)
  • 分库(Sharding Database)

什么是分库分表

1. 分表

把一张大表拆成多张小表。

例如:

原表:

user_order

拆成:

user_order_0 user_order_1 user_order_2 user_order_3

每张表只存一部分数据。

2. 分库

把数据拆到多个数据库实例。

例如:

db_order_0 db_order_1 db_order_2

每个数据库都有自己的:

  • CPU
  • 内存
  • 磁盘
  • IO

实现水平扩展。

为什么要分库分表

1. 单表数据过大

例如:

订单表:10 亿数据

会导致:

  • B+Tree 非常高
  • 索引页巨大
  • 查询变慢
  • 更新慢

2. 单机写入瓶颈

MySQL 本质上:

单机存储系统

即使主从:

主库仍然负责写

写压力会集中。

3. 热点问题

例如:

订单表 消息表 日志表

写入极高。

4. 运维问题

超大表:

  • 备份慢
  • 恢复慢
  • DDL 风险高

分库分表分类

1. 垂直拆分

按业务拆。

原始:

一个数据库: - user - order - product

拆分:

用户库 订单库 商品库

即:

user_db order_db product_db

优点:

  • 业务隔离
  • 降低耦合
  • 专库专用

缺点:

  • 无法解决单表过大

2. 水平拆分

按数据拆。

水平分表

例如:

user_order_0 user_order_1 user_order_2 user_order_3

规则:

user_id % 4

水平分库

例如:

db_order_0 db_order_1

规则:

user_id % 2

分片核心:Sharding Key

分库分表最重要的是:

分片键(Sharding Key)

例如:

user_id order_id tenant_id

为什么重要?

因为:

数据路由全靠它

例如:

user_id = 1001

路由:

1001 % 4 = 1

进入:

user_order_1

常见分片算法

1. 取模

最常见:

id % n

例如:

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

Taotoken Token Plan套餐详解如何为长期项目节省大模型调用成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken Token Plan套餐详解如何为长期项目节省大模型调用成本 对于从事STM32或物联网开发的团队而言&#xff0c;长期、稳定地调…

作者头像 李华
网站建设 2026/5/19 20:34:45

LLVM官方支持LoongArch:自主指令集架构融入全球开源生态

1. 项目概述&#xff1a;LoongArch架构的“官方认证”时刻作为一名长期混迹于编译器和底层系统领域的开发者&#xff0c;最近社区里一个消息让我和不少同行都挺兴奋的&#xff1a;LLVM国际开源软件社区正式发布了支持LoongArch架构的版本。这可不是某个厂商自己维护的补丁集&am…

作者头像 李华
网站建设 2026/5/19 20:30:16

Scroll Reverser:macOS滚动方向独立控制的终极解决方案

Scroll Reverser&#xff1a;macOS滚动方向独立控制的终极解决方案 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾在Mac上同时使用触控板和鼠标时感到操作混乱&#xf…

作者头像 李华