分库分表介绍
分库分表介绍
为何需要分库分表
关系型数据库本身由于单机存储容量、连接数、处理能力都有限,容易成为系统瓶颈。
通过数据库分库分表,可以减少数据库的负担,缩短查询时间。
分库分表有哪些
分库分表可以分为垂直切分和水平切分。
垂直切分
垂直切分有垂直分库和垂直分表两种。
垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的数据库。
垂直分表是基于数据库中的列进行,某个表字段较多,可以新建一张扩展表,将不经常用或者字段长度较大的字段拆分到扩展表中。
水平切分
水平切分有水平分库和水平分表两种。
水平分库就是将数据按照不同的条件分散到不同的数据库中。
水平分表就是将数据按照不同的条件分散到不同的数据表中。
水平切分的条件:
- 根据数据范围。
- 根据数据取模。
分库分表带来的问题
分库分表带来的问题有:
- 事务一致性问题。
- 跨节点关联查询问题。
- 跨节点分页、排序、函数问题。
- 全局主键重复问题。
分库分表中间件
开源的分库分表中间件有:
- sharding-jdbc
- TSharding
- Atlas
- Cobar
- MyCAT
- Oceanus
- Vitess