数据库的分区分库分表,水平切分与垂直切分
2018-03-12 15:53
369 查看
在整理项目的时候,突然发现对数据库的水平切分与垂直切分比较模糊,特此学习!
参考:https://www.cnblogs.com/bluebluesky/articles/6413831.html
1、数据库分区
就是把同一个数据库里的表放到不同的服务器上,负载均衡,但是在用户上来看,只有一个服务器
2、数据库分表
把一张表按照一定的规则分解成不同的实体表。比如垂直划分和水平划分
2.1、垂直切分
把不同功能,不同模块的数据分别放到不同的表中,但是如果同一个模块的数据量太大就会存在性能瓶颈
2.2、水平切分
垂直切分解决不了大表的瓶颈,如果同一个功能中表的数据量过大,就要对该表进行切分,为水平切分
通俗理解:垂直切分---分不同的模块表;水平切分---分同一个模块下的多个表
2.3、二者的结合
垂直切分可以使模块的划分更清晰,分成功能不同的表;水平切分可以解决大数据下大表性能的瓶颈问题。
2.4、案例
以mysql为例,简单购物系统暂设涉及如下表:
1.产品表(数据量10w,稳定) 2.订单表(数据量200w,且有增长趋势) 3.用户表 (数据量100w,且有增长趋势) 以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万 垂直拆分: 解决问题: 表与表之间的io竞争 不解决问题: 单表中数据量增长出现的压力 方案: 把产品表和用户表放到一个server上 订单表单独放到一个server上 水平拆分: 解决问题: 单表中数据量增长出现的压力 不解决问题: 表与表之间的io争夺 方案: 用户表通过性别拆分为男用户表和女用户表 订单表通过已完成和完成中拆分为已完成订单和未完成订单 产品表 未完成订单放一个server上 已完成订单表盒男用户表放一个server上 女用户表放一个server上(女的爱购物)3、分库
将一堆数据放到不同的数据库中保存,上面说的都是在同一个数据库上,分库是分到不同的数据库上
4、分区和分表的区别与联系
1)分区和分表的目的都是减少数据库的负担,提高表的增删改查效率
2)分区知识一张表中的数据的存储位置发生变化,还是在一张表中,分表是将一张表分成多张表
3)当访问量大,且表数据比较火时,两种方式可以相互配合使用
4)当访问量不大,但表数据比较多时,可以只进行分区
参考:https://www.cnblogs.com/bluebluesky/articles/6413831.html
1、数据库分区
就是把同一个数据库里的表放到不同的服务器上,负载均衡,但是在用户上来看,只有一个服务器
2、数据库分表
把一张表按照一定的规则分解成不同的实体表。比如垂直划分和水平划分
2.1、垂直切分
把不同功能,不同模块的数据分别放到不同的表中,但是如果同一个模块的数据量太大就会存在性能瓶颈
2.2、水平切分
垂直切分解决不了大表的瓶颈,如果同一个功能中表的数据量过大,就要对该表进行切分,为水平切分
通俗理解:垂直切分---分不同的模块表;水平切分---分同一个模块下的多个表
2.3、二者的结合
垂直切分可以使模块的划分更清晰,分成功能不同的表;水平切分可以解决大数据下大表性能的瓶颈问题。
2.4、案例
以mysql为例,简单购物系统暂设涉及如下表:
1.产品表(数据量10w,稳定) 2.订单表(数据量200w,且有增长趋势) 3.用户表 (数据量100w,且有增长趋势) 以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万 垂直拆分: 解决问题: 表与表之间的io竞争 不解决问题: 单表中数据量增长出现的压力 方案: 把产品表和用户表放到一个server上 订单表单独放到一个server上 水平拆分: 解决问题: 单表中数据量增长出现的压力 不解决问题: 表与表之间的io争夺 方案: 用户表通过性别拆分为男用户表和女用户表 订单表通过已完成和完成中拆分为已完成订单和未完成订单 产品表 未完成订单放一个server上 已完成订单表盒男用户表放一个server上 女用户表放一个server上(女的爱购物)3、分库
将一堆数据放到不同的数据库中保存,上面说的都是在同一个数据库上,分库是分到不同的数据库上
4、分区和分表的区别与联系
1)分区和分表的目的都是减少数据库的负担,提高表的增删改查效率
2)分区知识一张表中的数据的存储位置发生变化,还是在一张表中,分表是将一张表分成多张表
3)当访问量大,且表数据比较火时,两种方式可以相互配合使用
4)当访问量不大,但表数据比较多时,可以只进行分区
相关文章推荐
- mysql水平分表和垂直分表和数据库分区
- 数据库读写分离和垂直分库、水平分表
- 数据库读写分离和垂直分库、水平分表
- 数据库读写分离和垂直分库、水平分表
- (转)mysql水平分表和垂直分表和数据库分区
- 数据库的分库分表拆分:垂直拆分,水平拆分
- (转)mysql水平分表和垂直分表和数据库分区
- 数据库读写分离和垂直分库、水平分表
- 数据库读写分离与垂直分库水平分表
- mysql水平分表和垂直分表和数据库分区
- mysql水平分表和垂直分表和数据库分区
- 数据库的垂直切分和水平切分
- 关于数据库的水平切分和垂直切分的一些概念(转)
- [转载] 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 关于数据库的水平切分和垂直切分的一些概念(转)
- 基于MyBatis的数据库切分框架,可实现数据的水平切分和垂直切分。 http://www.makersoft.org
- 关于数据库的水平切分和垂直切分的一些概念(转)
- 数据库的垂直分库和水平分库
- 深入理解关系型数据库的数据水平切分和垂直切分