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