没有合适的资源?快使用搜索试试~ 我知道了~
(1)水平拆分和垂直拆分都是降低数据量大小,提升数据库性能的常见手段 (2)流量大,数据量大时,数据访问要有service层,并且service层不要通过join来获取主表和扩展表的属性 (3)垂直拆分的依据,尽量把长度较短,访问频率较高的属性放在主表里
资源推荐
资源详情
资源评论
一、缘起
当数据库的数据量非常大时,水平切分和垂直拆分是两种常见的降低数据库大小,提升性能的方法。假设有用户
表:
user(
uid bigint,
name varchar(16),
pass varchar(16),
age int,
sex nyint,
ag nyint,
sign varchar(64),
intro varchar(256)
…);
水平切分是指,以某个字段为依据(例如 uid),按照一定规则(例如取模),将一个库(表)上的数据拆分到多
个库(表)上,以降低单库(表)大小,达到提升性能的目的的方法,水平切分后,各个库(表)的特点是:
(1)每个库(表)的结构都一样
(2)每个库(表)的数据都不一样,没有交集
(3)所有库(表)的并集是全量数据
二、什么是垂直拆分
垂直拆分是指,将一个属性较多,一行数据较大的表,将不同的属性拆分到不同的表中,以降低单库(表)大小,
达到提升性能的目的的方法,垂直切分后,各个库(表)的特点是:
(1)每个库(表)的结构都不一样
(2)一般来说,每个库(表)的属性至少有一列交集,一般是主键
(3)所有库(表)的并集是全量数据
还是以上文提到的用户表为例,如果要垂直拆分,可能拆分结果会是这样的:
user_base(
uid bigint,
name varchar(16),
pass varchar(16),
age int,
sex nyint,
ag nyint,
…);
user_ext(
uid bigint,
sign varchar(64),
intro varchar(256)
…);
三、垂直切分的依据是什么
当一个表属性很多时,如何来进行垂直拆分呢?如果没有特殊情况,拆分依据主要有几点:
(1)将长度较短,访问频率较高的属性尽量放在一个表里,这个表暂且称为主表
(2)将字段较长,访问频率较低的属性尽量放在一个表里,这个表暂且称为扩展表
如果 1 和 2 都满足,还可以考虑第三点:
资源评论
hyy80688
- 粉丝: 10
- 资源: 202
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功