分库
分库:把一些不同业务的表放到不同数据库,不同数据库还可以放到不同的服务器。
作用
减轻服务器的压力,增加数据库吞吐量。
分区
分区:mysql的一种技术设计,将一个表的数据分段在同一个服务器的多个物理位置存放。
表还是一个表,sql没有影响,业务层不用改。
作用
减轻数据库的负担,提高数据库效率,提高表的增删改查效率。
适用场景
表数据量大,访问量不大。
分区方式
- range,范围
 - list,预定义列表
 - hash
 - key,hash模式的一种延伸
 - composite,复合模式,以上模式组合使用
 
sql语句
range:
1  | create table range(  | 
分表
分表:开发人员的物理设计,将一个大表按照一定规则分解成多张子表。
表拆分成多个表,sql有影响,业务层需要调整。
作用
减轻数据库的负担,提高数据库效率,提高表的增删改查效率。
适用场景
表数据量大,访问量大。
集群
mysql集群是一个无共享的、分布式节点架构的存储方案,其目的是提供容错性和高性能。
通过多个mysql服务器分配负载,从而最大程序地达到高性能,通过在不同位置存储数据保证高可用性和冗余。
优缺点
优点:
- 高可用性;
 - 快速自动失效切换;
 - 灵活分布式体系结构,没有单点故障;
 - 高吞吐量、低延迟;
 - 可拓展性强,支持在线扩容。
 
缺点:
- 不支持外键;
 - 部署、管理、配置复杂;
 - 占用磁盘空间大、内存大;
 - 备份、恢复不方便;
 - 重启时,数据节点将数据load到内存需要很长时间。