分库分表的原因和作用

485 阅读2分钟

在高并发的系统中,分库分表是必不可少的技术手段之一。

分库分表分为两条方向:垂直拆分水平拆分

垂直拆分

根据业务方向,分布到不同的库或表中。比如说,某个表中,字段很多,数量不多情况下,就可以进行垂直拆分。

优点

  • 拆分后业务清晰,拆分规则明确

  • 系统之家整合或扩展容易

  • 数据维护简单

缺点

  • 部分业务表无法join连表查询,只能通过接口方式解决,提高了系统复杂度

  • 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展和性能提高

  • 事务处理了复杂

水平拆分

根据数据方向,分布到不同的库或表中。比如说,某个表中,字段不多,数量很多情况下,就可以进行水平拆分。

优点

  • 不存在单库大数据,高并发的性能瓶颈

  • 对应用透明,应用端改造少

  • 按照合理拆分规则拆分,join连表操作基本避免跨库

  • 提高了系统的稳定性和负载能力

缺点

  • 拆分规则难以抽象

  • 分片事务一致性难以解决

  • 数据库多次扩展难度和维护量极大

  • 跨库join性能较差

规划分库分表

分库 为了解决数据库连接资源不足问题,和磁盘IO的性能瓶颈

分表 为了解决单表数据量太大,即使走索引也非常耗时。此外,还可以解决消耗CPU资源问题

分库分表 可以解决数据库连接资源不足、磁盘IO的性能瓶颈、检索数据耗时和CPU资源等问题

业务场景中,用户并发量很大,但是需要保存的数据量较少,这时可以分库,不分表

用户并发量不大,但是需要保存的数量较多,可以进行分表,不分库

如果用户量并发大,并且保存的数据量交到,可以进行分库分表

遗留问题

分库分表的具体实现方案有哪些

分库分表后如何平滑扩容

分库分表后带来了哪些问题

如何在项目中实现分库分表功能