希望我能够得到关于应该运行的粗略估计。
如果没有有关您的查询和数据大小的更多信息,则很难给您任何估算,更不用说准确的估算了。
数据库:SQL Server 2008 R2企业数据库
Windows:Windows 2008 r2 Enterprise 64位,可以肯定在VMware上运行。
处理器:Intel(R)Xeon(R)CPU E7-4860 @ 2.27GHz 2.26 GHz(2个处理器)
安装的内存:4GB
两个处理器(我假设它在VM中以2个内核公开)可能未必会配置不足。分配给VM的核心不一定直接映射到物理核心(甚至在需要时甚至允许使用单个核心的100%!),因此您可能会发现这是比内存更灵活的资源。如果没有有关您的工作负载或硬件/虚拟化配置的更多信息,我想说将其增加到4就可以了。
内存分配。好家伙。这对于工作负载而言严重不足。Windows本身至少需要2-3 GB的空间才能保持快乐,并且在盒子上运行BIDS的2个用户中的每个用户都至少需要500 MB。这样一来,包装盒就已经花光了,我什至没有开始弄清楚数据库需要多少。
大多数用户通过asp.net网站和报表服务器网站与数据库进行交互。
您没有说,但是如果它们在同一盒上运行,则还需要考虑它们的内存需求。
最后,我们有一个相当复杂的数据仓库操作,它可能每天也通过在服务器上运行的SSIS包带来300万条记录。
假设此操作在没有系统用户的夜晚运行,除非运行时间太长,否则我认为这不是问题。这部分事情是您最少的担心;实时用户更为重要。
我们先前对额外内存的请求已被拒绝,我们需要执行更多查询优化来获得共同的响应。
如上文所述,当前已配置的内存量完全不足。但是,与此同时,在另一端,您极不可能配置足够的内存以能够一次将整个数据库保留在内存中。
即使您得到了这样的全面答复(顺便说一句,这可能与您是否有理由说服额外资源的理由,而不是实际的资源使用本身有关),很可能数据库的效率可能是改善。但是,没有任何一个调整可以解决您现在遇到的问题。那个建议对我来说完全是初学者。
我将采用总体方法,即当前配置的内存量低于所需的最小数量(应尽快更正),并且可能需要额外的资源才能将用户体验提高到可用水平,同时进行改进以提高效率。系统。
以下是一些想法(按攻击顺序):
如果您能够证明每次配置更多资源都会提高多少性能,那么您将赢得胜利。使用性能监视器日志记录性能指标(注意:日志记录部分非常重要),包括网站响应时间(如果可以)。开始做这个现在在做任何事情之前,。当您最终达到最小内存量(您不会马上获得32 GB)时,突然您现在有证据表明添加的内存可以改善性能……这意味着添加更多的内存也可能会有所帮助!如果您没有在当前配置上收集基线,那么当事情达到建议的最低水平时,您将错过机会。
分析服务器的等待统计信息。这将告诉您系统中最大的瓶颈是什么。您可能会遇到PAGEIOLATCH_XX
最常见/最长的等待时间,这表明执行过多的I / O操作无法从磁盘获取页面。可以通过添加内存来缓解这种情况,因此,由于所需的数据已在内存中,因此物理I / O的频率降低了。尽管此分析几乎是已成定局的结论,但事实证明您已经收集了这些统计数据,这在为资源需求辩护时会给您带来更多的弹药。
正如我上面提到的,内存的最低要求没有得到满足。收集所有正在运行的软件的建议硬件要求集,还可以获取任务管理器的屏幕截图。仅此一项就足以当场证明至少有4-8 GB的空间。如果他们仍然拒绝,请尝试说服他们让您试用一个星期,然后再归还(您正在收集效果统计信息,因此您无需归还它,因为周中您可以就能证明情况有所改善)。如果他们仍然拒绝,那就意味着您将失败。URLT。
如果您可以卸载某些工作负载(尤其是尽可能避免远程处理),则这将增加数据库可用的内存量,这一点更为关键。
您将无法在内存中,以适应整个数据库一次,这意味着你需要设置SQL Server的最大内存非常仔细地设置为防止内存过度承诺,它可以杀死一样的性能没有别的。实际上,过量使用甚至比不能完全容纳内存中的数据还要糟糕。您很可能现在就处于这种情况,仅是因为根本没有可用的内存,而且最大内存设置很可能已设置为默认值(无限制)。
由于您正在运行SQL Server Enterprise Edition,并且内存非常宝贵,因此我强烈考虑实现数据压缩。这将在增加CPU使用率以节省内存空间(并因此减少磁盘访问,相对较慢)方面取得平衡。
调整数据库。就索引和访问模式而言,结构和查询可能会使用改进。另外,如果经常扫描和聚合大量数据,则创建索引视图,摘要表或预先计算的报告可能会非常有帮助。
这可能是一个漫长的过程,因为这可能意味着需要更多的硬件配置,但要实现缓存解决方案。最快的查询是您从未做出过的查询。
这些只是一些想法。最重要的是,仅靠调优无法解决这里的问题,仅靠硬件也无法解决,即使后者可能会缓解大多数眼前的问题。真正的方法就是这样:在短期内将硬件投入到该问题上来扑灭大火,并在长期内对该问题进行调整,以尽最大可能解决根本原因。