Skip to main content

分表和分库是什么?有什么区别?

分表和分库是什么?有什么区别?

分库

分库:解决单机 MySQL 并发连接过多、扛不住的问题。它是一种水平扩展技术,按规则将数据分布到多个独立数据库中,每个库只存部分数据,实现分布式存储。

分表

分表:解决单表数据量过大导致查询性能下降的问题。它将单个数据库中的一张表拆成多张表,每张表存一部分数据(你描述为“垂直划分”,实际通常指水平拆分行数据),从而提升查询效率、减轻单表压力。

如何分

  • 垂直分库:按业务功能拆分到不同数据库(如订单库、支付库),分摊库压力,但不解决单表数据量过大问题。

  • 垂直分表:将宽表中不常用或独立的字段拆分到子表,减少单表字段数,提升内存加载效率和索引命中率。

  • 水平分库:将同一张表按规则拆分到多个数据库(不同服务器),实现水平扩展,解决单库性能与存储瓶颈,但增加系统复杂度。

  • 水平分表:在同一库内将大表拆成多个结构相同的子表,解决单表数据量问题,但未解决单机资源竞争,需结合分库达到分布式效果。