news 2026/7/21 6:46:14

MySQL 分库分表入门:为什么要分库分表?基础方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 分库分表入门:为什么要分库分表?基础方案

前言

单表数据量达到千万级后,索引膨胀、查询变慢、备份恢复耗时巨大,单纯索引优化无法解决。分库分表是海量数据终极扩容方案,分为分表、分库、水平拆分、垂直拆分。


一、为什么需要分库分表

  1. 单表千万级数据,B+Tree 索引层级变深,查询 IO 暴涨;
  2. 单库磁盘、CPU、连接数存在硬件上限;
  3. 大批量 DML 操作锁表、锁行冲突严重,并发性能差;
  4. 单库备份、恢复耗时极长,故障影响范围大。

二、两种拆分方案

1. 垂直拆分(分库)

按业务模块拆分数据库:用户库、订单库、商品库。 优点:业务隔离,单库压力降低; 缺点:跨库 JOIN 无法直接执行,需要代码关联。

2. 水平拆分(分表,最常用)

同一业务表按规则拆分多张子表,例如订单表拆分为 order_0 ~ order_15。 分片规则:

  • 按用户 ID 取模分片;
  • 按时间范围分片(按月分订单)。

三、入门落地中间件

  • Sharding-JDBC:Java 客户端分库分表,无需额外服务;
  • MyCat:独立中间件,代理层分片,多语言项目通用。

四、适用与不适用场景

需要分库分表

订单、日志、流水、用户行为数据,单表超 500 万行。

不需要分库分表

小型后台、管理系统,单表百万以内,索引优化即可支撑。


五、分片常见问题

  1. 跨分片分页、排序、聚合复杂;
  2. 全局唯一 ID 需要分布式 ID 生成器;
  3. 事务仅支持分片内本地事务,跨分片分布式事务成本高。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 6:46:05

STM32F103C8T6舵机测试仪设计与实现

1. 项目概述:用STM32F103C8T6打造专业级舵机测试仪去年调试机器人项目时,我曾在三天内烧毁了7个舵机——不是因为质量问题,而是PWM信号参数设置错误。这次惨痛经历让我意识到:每个电子工程师的工作台上,都该有个可靠的…

作者头像 李华
网站建设 2026/7/21 6:42:20

赋能能源产业,黑龙江单工科技助力工矿企业安全生产

黑龙江是我国重要的能源基地,煤炭、石油、电力等工矿企业众多,安全生产是企业发展的重中之重。而可靠的通信保障,是工矿企业安全生产调度、隐患排查、应急救援的关键支撑。黑龙江单工科技有限公司聚焦能源行业安全生产刚需,打造工…

作者头像 李华
网站建设 2026/7/21 6:38:01

Davinci Developer的名称的冗余使用

冗余是命名规范范围内的重要话题。例如,如果多个实现数据类型属于两个不同的包,则可以使用相同的名称创建它们;但反过来,如果多个实现数据类型属于同一个包,则严禁使用相同的名称。 在代码生成时,如果它们属于不同的包且

作者头像 李华
网站建设 2026/7/21 6:36:07

3D打印公差设计实战:从SolidWorks建模到实物装配的避坑指南

前言:从设计到实物的鸿沟 很多嵌入式开发者都有过类似的经历:在电脑上用SolidWorks精心设计了一个完美的电路板外壳,满怀期待地将STL文件发送给3D打印服务商,几天后拿到实物,却发现要么装不进去,要么缝隙巨…

作者头像 李华
网站建设 2026/7/21 6:34:59

2026-07-21:可由多种立方和构造的整数。用go语言,给定一个正整数上限 n,一个正整数 x 被称为“好整数”,当且仅当它可以表示为两组不同的正整数对 (a, b) 的立方和,其中 a 和 b

2026-07-21:可由多种立方和构造的整数。用go语言,给定一个正整数上限 n,一个正整数 x 被称为“好整数”,当且仅当它可以表示为两组不同的正整数对 (a, b) 的立方和,其中 a 和 b 都是正整数且满足 a ≤ b。换句话说&…

作者头像 李华
网站建设 2026/7/21 6:29:18

C语言入门基础:头文件,注释,ASCLL,数据类型,原码 补码 反码,内存(求字节大小),局部/全局变量,强制转换,常用占位符,VS2022 scanf函数需要引入头文件

初识C语言&#xff1a; 第一个C语言程序&#xff1a; #include <stdio.h> int main () {printf("Hello\n");return 0; } C语言程序只能有一个main函数&#xff08;主函数&#xff09; return 0&#xff1b;结尾 库函数头文件查询网站&#xff1a; 1.Refere…

作者头像 李华