当我接到一项任务时,我就有了这个问题,这让我思考了一段时间。但无法给出更准确或更满意的答案。
任务是这样的,
我已经拥有的东西
交给我的任务是
现在我的问题是
当我向我的团队成员问这个问题时,他回答说 “如果创建一个新列,很多行的值可能为空,并且浪费空间”(他说的也对。)
这表明他在查询时间上越来越关心空间。
现在我们可以用钱得到任何空间,但速度更重要对吧。如果速度较低,那么节省磁盘空间有什么用呢?
难道我们不应该多关心时间,少关心空间吗?
我想知道你对此有何看法。什么对你来说更重要,为什么?
我知道这个问题可能会被否决,但我想知道大多数开发人员在这种情况下的想法。他们更关心的是空间还是时间?
感谢您的宝贵时间。
这将是一个答案,即使它是个人而言,因为它对于评论来说太大了:
两者很少相互分离,而是互为函数。
速度也不仅仅是“查询时间”,而且基本上是包括数据处理在内的执行时间。从请求到回复。
因此,如果您有一些占用空间的东西,您就会有更多的 I/O 和更多的内存使用量,并且需要花费更多的时间访问数据和传输数据。
所以我的“答案”是:
平等对待两者并将两者最小化。
这表明他在查询时间上越来越关心空间。 :
不,这是一个错误的假设。
如果您在考虑性能时开始考虑数据库中的标准化和非标准化,那么标准化数据总是更好。 这不仅是为了节省空间,也是为了节省数据/数据完整性的维护(更快的更新,更少的锁定);索引(空间,是的 - 还有速度),然后在使用数据 I/O 时,通过网络从磁盘传输到服务器、内存使用。另外,空间使用意味着内存使用,占用空间的东西越多,您想要放入内存的东西就越多。
所有这些都会带来性能,也就是速度。
当您开始考虑在数据库中士气低落时,您通常会结合预先计算结果和查询来执行此操作,并利用缓存,这样您就不必按需进行连接。因此,尽管在某些情况下,反规范化是一种可行的解决方案,但通常情况下,对数据进行规范化仍然会更好。
感谢您的回答,但是有没有关于速度与空间的文章?