数据库的反范式化设计

本文探讨了数据库设计中的反范式化,指出其在追求查询性能时,适当牺牲范式化原则。通过缓存与汇总数据、计数器表设计等实例,说明反范式化如何在特定场景下提高查询效率。同时,讨论了维护反范式数据的方法,包括实时维护和定期重建。
摘要由CSDN通过智能技术生成

完全符合范式化的设计真的完美无缺吗?很明显在实际的业务查询中会大量存在着表的关联查询,而表设计都做成了范式化设计(甚至很高的范式),大量的表关联很多的时候非常影响查询的性能。

反范式化就是违反范式化设计:

1、为了性能和读取效率而适当的违反对数据库设计范式的要求;

2、为了查询的性能,允许存在部分(少量)冗余数据

换句话来说反范式化就是使用空间来换取时间。

1.范式化和反范式对比

1、范式化的更新操作通常比反范式化要快(字段较少)。

2、当数据较好地范式化时,就只有很少或者没有重复数据,所以只需要修改更少的数据。

3、范式化的表通常更小,所以占据的内存更少。

4、范式化设计的缺点是通常需要关联,稍微复杂一些的查询语句在符合范式的表上都可能需要至少一次关联,也许更多。

5、复杂一些的查询语句也可能使一些索引策略无效。例如,范式化可能将列存放在不同的表中,而这些列如果在一个表中本可以属于同一个索引。

2.项目中常见的反范式实现

范式化和反范式化的各有优劣,怎么选择最佳的设计?小孩子才做选择,我们全都要!!!

2.1 缓存与汇总数据

“缓存”来表示存储那些可以比较简单地从其他表获取数据的表。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值