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



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

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

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

交给我的任务是

  • 创建一个新的表来跟踪被删除的用户
  • 然后将"用户"表与这个新创建的表连接起来,并显示尚未删除且类型为"代理"的用户

现在我的问题是

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

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

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

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

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

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

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

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

如果您在考虑性能时就开始考虑数据库中的规范化和去规范化,那么对数据进行规范化总是更好的。这不仅是为了节省空间,也是为了节省对数据/数据完整性的维护(更新更快,锁定更少);索引(空间,是的,但也有速度),然后在使用数据I/O时,从磁盘到服务器,再到内存使用,再到网络。另外,空间使用意味着内存使用,占用空间的东西越多,你就越想把它放进内存。

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

当你开始考虑数据库中的士气低落时,你通常会结合预计算结果和查询来进行,并利用缓存,这样你就不必按需进行连接。因此,尽管在某些情况下,去标准化是一个合理的解决方案,但通常情况下,你还是最好对数据进行标准化。

最新更新