sql – 规范化数据库对资源的影响是什么?

前端之家收集整理的这篇文章主要介绍了sql – 规范化数据库对资源的影响是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
从相对未规范化的形式获取数据库并对其进行规范化时,资源利用率会发生什么变化(如果有的话)?

例如,规范化通常意味着从更少的表创建更多的表,这意味着数据库现在具有更多的表,但是其中许多表非常小,允许经常使用的表更好地适应内存.

更多的表还意味着需要(可能)更多的连接来获取抽象出来的数据,因此可以预期系统需要的更多连接数会产生某种影响.

那么,对未规范化数据库进行规范化会对资源使用产生什么影响(即什么会改变)?

编辑:
为了添加一些上下文,我有一个包含300多个可怕表的现有(即遗留)数据库.大约1/2的数据是TEXT,另一半是char字段或整数.没有任何限制.我问的原因主要是获取更多信息,以说服其他人事情需要改变,并且不会降低性能或可维护性.不幸的是,那些我必须说服的人已经足够了解非规范化数据库性能优势,希望尽可能避免规范化.

解决方法

这通常无法以一般方式得到解答,因为影响将根据相关数据库的具体情况和使用它的应用程序而有很大差异.

所以你基本上表达了对影响的一般期望:

>随着冗余数据被删除,存储的总体内存需求将下降
> cpu需求可能会上升,因为查询可能会变得更加昂贵(请注意,在许多情况下,规范化数据库上的查询实际上会更快,即使它们更复杂,因为查询引擎有更多优化选项)
>开发资源需求可能会增加,因为开发人员可能需要构建更复杂的查询(但另一方面,您需要更少的开发工作来维护数据完整性)

所以唯一真正的答案是通常的:它取决于;)

注意:这假设我们正在谈论谨慎和有意的非规范化.如果你指的是“随着数据的出现而把一些表放在一起”的方法与没有经验的开发人员共同使用,我会冒这样的说法:规范化将减少所有级别的资源需求;)

编辑:关于cdeszaq添加的具体情况,我会说’祝你好运得到你的观点’;)

显然,有超过300个表并且没有约束(!),你的问题的答案肯定是“正常化将减少所有级别的资源需求”(并且可能非常大),但是:

重构这样的混乱将是一项重大任务.如果只有一个应用程序使用这个数据库,它已经是可怕的 – 如果有很多,它可能会变成一场噩梦!

因此,即使从长远来看,正常化将大大减少资源需求,但根据具体情况,可能不值得.这里的主要问题是关于长期范围 – 这个数据库有多重要,它将被使用多长时间,将来会有更多的应用程序使用它,当前的维护工作是不变还是增加等等……

不要忽视它是一个正在运行的系统 – 即使它是丑陋和可怕的,根据你的描述,它还没有被打破;-)

猜你在找的MsSQL相关文章