架构师-反规范化设计

1.反规范化设计的前提


反规范化设计是规范化设计之后的步骤,首先令所有关系满足规范化设计(一般到3NF),之后的反规范化设计才能是可控的。

2.反规范化设计的优点


能够减少数据库查询时SQL的连接次数,从而减少磁盘IO,提高查询效率。

3.反规范化设计的缺点


反规范化设计会带来数据的重复存储,浪费了额外的磁盘空间,并且由于多处存储,增加了数据维护的复杂性。

4.反规范化设计的方法

1.增加冗余列:

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

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

将需要经常连接的表重新组合成一个表,减少连接操作而提高性能。
4.水平分割表:

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

将表按照列的关系进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中,在查询时减少I/O次数。

5.优缺点

好处
降低连接操作的需求:

减少表之间的连接操作,提高查询效率,特别是对于复杂查询而言。
降低外码和索引的数目:

减少了数据的索引和外键,降低了数据库的维护成本和存储开销。
可能减少表的数目:

通过重新组织数据,将原本分散的信息整合到一个表中,减少了表的数量,简化了数据库结构。
缺点
数据的重复存储:

增加了数据的冗余,浪费了磁盘空间,可能导致数据一致性的问题。
可能出现数据的完整性问题:

由于数据的冗余和重复存储,增加了数据维护的复杂性,可能导致数据一致性的问题。
降低修改速度:

数据的冗余和重复存储增加了数据的维护成本,可能会降低数据的修改速度。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

薛定谔的猫1981

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

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

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

打赏作者

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

抵扣说明:

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

余额充值