L数据库

2021-02-25 14:30

I的大小要求在一次采访中被问到这样一个问题:如果每个月处理650MB的数据,一立的L服务器的DB大小是多少。我在面试中没有回答这个问题,后来也没有找到任何答案

解答动态

  • 这是一个没有确切答案的式面试问题。为了清楚起见,面试官可能希望你问一些额外的问题。
    实际的空间需求将取决于“已处理”的含义,数据保留(是否删除过数据?),列数据类型,索引,存储开销,使用压缩特性(包括columnstore),加上额外的免费空间用于日常维护。

    • 在我看来,这类问题是愚蠢的面试问题,肯定需要更多的上下文。也许他们只是想看看你的想法,以及你会问什么后续问题来澄清问题。
      如果经过处理,他们的意思是每个月添加650MB的数据(即使在这里也会假设添加的650MB是数据+所有索引+任何其他消耗空间的补充对象),并且没有给出其他上下文,因此我们必须假设它们纯粹是指数据库的总数据文件大小(而不是事务日志文件或其他任何文件,因为这些文件大小取决于未知变量,如恢复模式和备份频率),那么数据库的大小是650 MB乘以它已联机的月数。
      如注释中所述:在最简单的示例中,如果使用完全恢复模式创建一个全新的数据库,则它没有索引(或任何其他可能导致数据重复的内容),并且会向其中写入650MB的数据。此时,大约1.3gb的磁盘空间正在被消耗,650mb用于数据,650mb用于将数据插入数据库的事务,现在位于事务日志中。因为在我最简单的示例中,它们没有提供任何其他细节,所以您只能假设它们最多表示原始数据,此时的原始数据为650 MB。
      但是您可以看到,即使在一个简单的示例中,它的变化速度也非常快。即使在那个例子中,我假设“处理”这个词的意思是“添加”。但处理可能意味着添加了350MB,然后删除了300MB。现在数据库大小(仅用于原始数据)只有50MB。在我前面的示例中,所消耗的总磁盘空间约为700 MB,因为事务日志中发生了650 MB的事务,加上此时数据库中额外的50 MB实际数据。
      如果我们知道更多信息,例如事务日志的备份频率,则这可能会改变上面的答案也是。例如,如果事务日志备份每5分钟发生一次,如果350 MB的数据插入到同一示例数据库中,7分钟后300 MB被删除,则当前磁盘上消耗的总空间为350 MB。50 MB的实际数据+300 MB当前位于事务日志中用于删除操作。初始插入操作的事务在此时间点消失,因为在事务日志备份发生后,事务将从中刷新,并且它们以前占用的空间将被新事务重新使用。
      因此,不幸的是,有很多方法可以解释此问题,在面试中最好通过问一些正确的后续问题来展示你的知识,比如“我们谈论的是数据库文件数据还是事务日志数据?”?quot;(简单恢复模式与完全恢复模式将导致在事务日志中存储不同数量的数据),quot;,如果面试官知道他们在做什么,那么这些后续问题会告诉他们,重要的不是问题的实际答案,因为你通过询问解决这类问题所需的知识来展示你的能力。
      关于在运行中增加可用磁盘空间和内存的最后一个问题:是的,在运行中,甚至在保持数据库联机的情况下,确实可以添加更多的磁盘空间和内存。真正做到这一点的方法将取决于您的服务器主机,无论是在prem服务器上还是在云中,物理服务器还是虚拟机,最后,这里有一些我发现非常有用的博客(没有特别的顺序):
      Josh Darnell的BlogBrent Ozar团队的BlogErik Darling的blogaron Bertrand的Blogsqlperformofmance.com文件Bertrand的另一个L博客Kendra Little的BlogRedGate的Simple Talk博客

      • 像这样含糊不清的问题,面试官并不期待(当然,如果他们自己知道什么的话)。他们希望测试您如何意识到问题过于模糊,以及您如何在实际情况下开始尝试回答此类问题,以了解您是否了解需要哪些额外的详细信息,以及如何从文档、开发团队或通过检查现有数据库来问求或查找这些详细信息只有错误的答案才是没有答案(包括直接的“我不知道”)或天真的答案(650MB*months),没有任何警告。
        我可能会用类似
        的方式回答这样的问题天真的答案是将650MB乘以我们期望服务运行的月数,假设该金额包括指数增长和其他附加成本,并且我们每月保留所有传入的数据,但要给出适当的估计,我们需要知道有多少经过处理的数据是新的,或是现有数据的更新,或是被丢弃,因为它已经存在,但被外部系统重新发送,我们还需要知道数据如何存储和索引的更多细节,这将对存储需求产生重大影响。另外,由于工作tempdb和事务日志的增长,数据的处理方式也会增加其他临时存储需求。
        告诉他们,你知道问题是模糊的,你知道什么是天真的,可能是不正确的答案(因此你会从其他地方认出这样的答案),你知道为了得到一个有用的估计所需要的细节。然后,他们可能会要求你进一步阐述其中的一些观点,或者从你所说的内容中提出更具体的问题

        • End

        免责声明:

        本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。