分库分表介绍


分库分表介绍

为何需要分库分表

关系型数据库本身由于单机存储容量、连接数、处理能力都有限,容易成为系统瓶颈。

通过数据库分库分表,可以减少数据库的负担,缩短查询时间。

分库分表有哪些

分库分表可以分为垂直切分和水平切分。

垂直切分

垂直切分有垂直分库和垂直分表两种。

垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的数据库。

垂直分表是基于数据库中的列进行,某个表字段较多,可以新建一张扩展表,将不经常用或者字段长度较大的字段拆分到扩展表中。

水平切分

水平切分有水平分库和水平分表两种。

水平分库就是将数据按照不同的条件分散到不同的数据库中。

水平分表就是将数据按照不同的条件分散到不同的数据表中。

水平切分的条件:

  • 根据数据范围。
  • 根据数据取模。

分库分表带来的问题

分库分表带来的问题有:

  • 事务一致性问题。
  • 跨节点关联查询问题。
  • 跨节点分页、排序、函数问题。
  • 全局主键重复问题。

分库分表中间件

开源的分库分表中间件有:

  • sharding-jdbc
  • TSharding
  • Atlas
  • Cobar
  • MyCAT
  • Oceanus
  • Vitess
上次编辑于:
贡献者: Neil