数据库水平拆分和垂直拆分区别(以mysql为例

数据库水平拆分和垂直拆分区别(以 mysql为例)
 
案例:
    简单购物 系统暂设涉及如下表:
1.产品表(数据量10w,稳定)
2.订单表(数据量200w,且有增长趋势)
3.用户表 (数据量100w,且有增长趋势)
以mysql为例讲述下水平拆分和垂直拆分,mysql能容忍的数量级在百万静态数据可以到千万
 
垂直拆分(按数据库表服务器拆分):
垂直拆分是指,将一个属性较多,一行数据较大的表,将不同的属性拆分到不同的表中,以降低单库(表)大小,达到提升性能的目的的方法,垂直切分后,各个库(表)的特点是:
(1)每个库(表)的结构都不一样
(2)一般来说,每个库(表)的属性至少有一列交集,一般是主键
(3)所有库(表)的并集是全量数据
 
 
解决问题:
表与表之间的io竞争
 
不解决问题:
单表中数据量增长出现的压力
 
方案:
把产品表和用户表放到一个server上
订单表单独放到一个server上
 
水平拆分(按数据逻辑服务器拆分):
水平切分是指,以某个字段为依据(例如uid),按照一定规则(例如取模),将一个库(表)上的数据拆分到多个库(表)上,以降低单库(表)大小,达到提升性能的目的的方法,水平切分后,各个库(表)的特点是:
(1)每个库(表)的结构都一样
(2)每个库(表)的数据都不一样,没有交集
(3)所有库(表)的并集是全量数据
 
解决问题:
单表中数据量增长出现的压力
 
不解决问题:
表与表之间的io争夺
 
方案:
用户表通过性别拆分为男用户表和女用户表
订单表通过“已完成”和“完成中”拆分为“已完成订单”和“未完成订单”
产品表 未完成订单放一个server上
    已完成订单表盒男用户表放一个server上
女用户表放一个server上(女的爱购物)
 
推荐教程:http://www.tuicool.com/articles/fYVBN32

猜你喜欢

转载自zhongmin2012.iteye.com/blog/2358627
今日推荐