什么是更重要的速度(时间)或空间

时间:2015-02-20 10:30:33

标签: performance diskspace benchmarking

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

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

  • 一张桌子"用户"其中包含有关用户的详细信息。与createdTime类似,键入(代理,管理,其他),id等,(此表中包含太多行(条目))

给我的任务是

  • 创建一个新表,用于跟踪被删除的用户。
  • 然后加入"用户"使用此新创建的表格的表格,并显示尚未删除且类型为“'代理商”的用户。

现在我的问题是

  • "他们为什么要我创建一个新表而不是创建一个新列(在User表中),它将存储一个标志(如果删除用户,则为true,否则不会删除)
  • "加入是不是很耗时?"
  • (在当前"用户"表中创建一个新列将有助于保持用户的详细信息。但是创建一个新表 - 这会有帮助吗?)

当我向我的团队成员提出这个问题时,他回复了"如果您创建了一个新列,那么对于很多行来说,该值可能为空,并且空间浪费" (他说的也是对的。)

这说明他在查询时间上越来越关心这个空间。
如今我们可以通过金钱获得任何空间,但速度更重要。如果速度较慢,那么节省磁盘空间的任何东西的用途是什么。
我们不应该关心更多时间和更少空间吗?

我想知道你对此的看法。什么对你更重要,为什么?
我知道这个问题可能会被低估但我想知道大多数开发人员在这种情况下的想法。他们更关心的是空间或时间? 谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

即使是个人发言,这也是一个答案,因为它太大而无法发表评论:

这两者很少彼此分开,而是彼此的功能。

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

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

如果您在考虑性能时开始考虑数据库中的规范化和反规范化,那么最好总是将数据规范化。 这不仅可以节省空间,还可以节省数据/数据完整性的维护(更快的更新,更少的锁定);索引(空间,是 - 但速度)然后使用从磁盘到服务器的数据I / O传输,以及跨网络的内存使用。此外 - 空间使用意味着内存使用,占用空间的东西越多,您想要放入内存的越多。

所有这些都会带来性能,即速度。

您开始考虑数据库中的道德败坏的时候,您通常会与预先计算结果和查询并利用缓存这样做,因此您不必按需进行联接。因此,虽然在某些情况下,非规范化是一种似是而非的解决方案 - 通常情况下,您仍然可以更好地规范化数据。