MySQL 分库分表是什么

举报
yd_283123001 发表于 2026/11/02 12:29:41 2026/11/02
【摘要】 当单库单表的数据量增长到一定规模,比如上千万甚至上亿行,索引变深、查询变慢、写入也变吃力,这时就需要分库分表,把数据分散到多个库、多张表中,本质是解决单机存储和计算能力的瓶颈。分库分表分两种。垂直拆分是按业务字段拆分,把大表拆成若干小表,或把不同业务拆到不同库,适合字段很多、冷热数据分离的场景。水平拆分是按某一字段(通常是用户 ID)把同一结构的表拆成多张,数据均匀分布,适合数据量巨大但结构...

当单库单表的数据量增长到一定规模,比如上千万甚至上亿行,索引变深、查询变慢、写入也变吃力,这时就需要分库分表,把数据分散到多个库、多张表中,本质是解决单机存储和计算能力的瓶颈。

分库分表分两种。垂直拆分是按业务字段拆分,把大表拆成若干小表,或把不同业务拆到不同库,适合字段很多、冷热数据分离的场景。水平拆分是按某一字段(通常是用户 ID)把同一结构的表拆成多张,数据均匀分布,适合数据量巨大但结构相似的场景。

分库分表会带来几个必须解决的问题。第一,分布式主键,不能再依赖自增 ID,一般用雪花算法或号段模式生成全局唯一 ID。第二,跨库的查询、分页和聚合会变得复杂,需要引入中间件,如 ShardingSphere、MyCat。第三,分布式事务的处理难度上升。

分库分表是手段而不是目的,不要一上来就拆。优先做好索引、SQL 优化和读写分离,等确实遇到瓶颈了再考虑拆分,否则只会徒增运维复杂度。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。