Mycat是一个开源的、面向企业应用开发的数据库中间件产品,在企业开发中常常使用Mycat作为分库分表的组件,本质上是一种数据库代理。
可以在Mycat的官网http://www.mycat.io/下载合适的Mycat版本。
Mycat分库分表
随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈。当数据库单表达到千万级别后,SQL性能会开始下降,如果不进行优化,SQL性能会继续下降。
一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好地提供数据服务,提升SQL性能。
1 分库
分库的含义是根据业务需要,将原库拆分成多个库,通过降低单库大小来提高单库的性能。常见的分库方式有两种——垂直分库和水平分库,分库架构如图17-1所示。
1.1 垂直分库
垂直分库根据业务进行划分,将同一类业务相关的数据表划分在同一个库中。如将原库中有关商品的数据表划分为一个数据库,将原库中有关订单相关的数据表划分为一个数据库。
1.2 水平分库
水平分库是按照一定的规则对数据库进行划分的。每个数据库中各个表结构相同,数据存储在不同的数据库中,如根据年份划分不同的数据库。
2 分表
分表的含义是根据业务需要,将大表拆分成多个子表,通过降低单表的大小来提高单表的性能。常见的分表方式有两种——垂直分表和水平分表,分库架构如图所示。
2.1 垂直分表
垂直分表就是将一个大表根据业务功能拆分成多个分表,例如将原表可根据业务分成基本信息表和详细信息表等。
2.2 水平分表
水平分表是按照一定的规则对数据表进行划分。每个数据表结构相同,数据存储在多个分表中。
来源:oschina
链接:https://my.oschina.net/u/3777515/blog/3168434