gpt4 book ai didi

sql - 规范化数据库对资源有何影响?

转载 作者:太空狗 更新时间:2023-10-30 01:49:56 25 4
gpt4 key购买 nike

当从相对非规范化的形式获取数据库并对其进行规范化时,人们可能期望资源利用率发生什么变化

例如,规范化通常意味着从更少的表中创建更多的表,这意味着数据库现在有更多的表,但其中许多表都非常小,可以让经常使用的表更好地适合内存。

更多的表也意味着(可能)需要更多的连接来获取被抽象出来的数据,因此人们预计系统需要执行的更多连接会产生某种影响。

那么,规范化未规范化的数据库对资源使用有什么影响(即会发生什么变化)?


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

最佳答案

这不能以一般方式真正回答,因为影响会显着变化,具体取决于所讨论的数据库和使用它的应用程序的具体情况。

所以您基本上陈述了有关影响的一般预期:

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

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

注意:这假设我们正在谈论谨慎和有意的反规范化。如果您指的是“在数据出现时将一些表放在一起” 方法,这种方法在没有经验的开发人员中很常见,我会冒险声明规范化将减少所有级别的资源需求;)


编辑:关于 cdeszaq 添加的特定上下文,我会说“祝你的观点顺利通过”;)

显然,有 300 多个表并且没有限制 (!),您问题的答案肯定是“规范化将减少所有级别的资源需求”(并且可能非常显着),但是:

重构这样一团糟将是一项艰巨的任务。如果只有一个应用程序使用这个数据库,那已经很可怕了——如果有很多,它可能会变成一场噩梦!

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

不要忽视它是一个正在运行的系统 - 即使它丑陋和可怕,根据您的描述它还没有(还)坏掉 ;-)

关于sql - 规范化数据库对资源有何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1379340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com