速度(时间)和空间哪个更重要

问题描述 投票:0回答:2

当我接到一项任务时,我就有了这个问题,这让我思考了一段时间。但无法给出更准确或更满意的答案。

任务是这样的,
我已经拥有的东西

  • “用户”表,其中包含有关用户的详细信息。如createdTime、type(agent、admin、other)、id等,(该表包含太多行(条目))

交给我的任务是

  • 创建一个新表来跟踪已删除的用户。
  • 然后将“User”表与这个新创建的表连接起来,并显示尚未删除且类型为“agent”的用户。

现在我的问题是

  • “为什么他们要求我创建一个新表而不是创建一个新列(在用户表中)来存储一个标志(true 如果用户被删除,否则不删除)
  • “join不费时间吗?”
  • (在当前“用户”表中创建一个新列将有助于保持用户详细信息完整。但是创建一个新表 - 这会有什么帮助?)

当我向我的团队成员问这个问题时,他回答说 “如果创建一个新列,很多行的值可能为空,并且浪费空间”(他说的也对。)

这表明他在查询时间上越来越关心空间。
现在我们可以用钱得到任何空间,但速度更重要对吧。如果速度较低,那么节省磁盘空间有什么用呢?
难道我们不应该多关心时间,少关心空间吗?

我想知道你对此有何看法。什么对你来说更重要,为什么?
我知道这个问题可能会被否决,但我想知道大多数开发人员在这种情况下的想法。他们更关心的是空间还是时间?
感谢您的宝贵时间。

performance diskspace benchmarking
2个回答
0
投票

这将是一个答案,即使它是个人而言,因为它对于评论来说太大了:

两者很少相互分离,而是互为函数。

速度也不仅仅是“查询时间”,而且基本上是包括数据处理在内的执行时间。从请求到回复。
因此,如果您有一些占用空间的东西,您就会有更多的 I/O 和更多的内存使用量,并且需要花费更多的时间访问数据和传输数据。 所以我的“答案”是:
平等对待两者并将两者最小化。

这表明他在查询时间上越来越关心空间。 :
不,这是一个错误的假设。

如果您在考虑性能时开始考虑数据库中的标准化和非标准化,那么标准化数据总是更好。 这不仅是为了节省空间,也是为了节省数据/数据完整性的维护(更快的更新,更少的锁定);索引(空间,是的 - 还有速度),然后在使用数据 I/O 时,通过网络从磁盘传输到服务器、内存使用。另外,空间使用意味着内存使用,占用空间的东西越多,您想要放入内存的东西就越多。

所有这些都会带来性能,也就是速度。

当您开始考虑在数据库中士气低落时,您通常会结合预先计算结果和查询来执行此操作,并利用缓存,这样您就不必按需进行连接。因此,尽管在某些情况下,反规范化是一种可行的解决方案,但通常情况下,对数据进行规范化仍然会更好。


0
投票

感谢您的回答,但是有没有关于速度与空间的文章?

© www.soinside.com 2019 - 2024. All rights reserved.