数据库原理:数据库的反规范化技术

(1)什么是反规范化技术

数据库设计者希望牺牲部分规范化来提供性能,这种从规范化设计的回退方法称之为反规范化技术。

(2)为什么要使用反规范化技术

当数据库对数据模型进行规范化处理后,会发现经过规范化处理后得模型在进行查询操作时效果并不理想。因为经过规范化处理过得数据模型形成一系列的小表,每个小表数据量较小,进行查询操作时往往需要应用程序对这些表进行动态连接操作,这就需要在不同的表中进行多次IO操作。表的连接操作对于较少的、小容量的表也许不会产生较大的影响,但是对于数据量十分庞大的数据库,这种多表的连接操作在时间上是很难让用户接受的,此时提高效率的最好方法就是使这些小表合并在一起,这就是数据的反规范化处理。

(3)反规范化技术的优缺点

反规范化技术主要是为了提升查询性能而进行的一系列处理,包括对数据表进行连接,合理规划数据的存放,以及合理的引入数据冗余。其优点在于降低连接操作的需求,降低外码和索引的数目,还可能减少表的数目;带来的问题是数据的重复存储,浪费了磁盘空间,可能出现数据的完整性问题,为了保障数据的一致性,增加了数据维护的复杂性,会降低修改速度。

(4)反规范化技术

   增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。

    增加派生列:在表中增加可以由本表或其它表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数。

    重新组表:如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

    水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。

    垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中,在查询时减少 I/O 次数。

示例-1:增加冗余列

规范化:

反规范化:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化与智能化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值