我们开发了一个带有搜索屏幕的系统,看起来像这样:
That would actually still be workable, but this system has another area with a time-sensitive process, lets say for simplicity that it's a web service, that needs to serve up responses very quickly or it will cause a timeout on the other end. The Disk Queue spikes are causing that part to bog down, which is causing timeouts downstream. The end result is actually dropped phone calls in our automated VoiceXML-based IVR, and that's very bad for us. 我们尝试过的方法 我们已经尝试过:
那么在这种情况下,你们通常会怎么做呢?我的直觉告诉我我们或许应该减少一些功能,但如果有办法保持原样,这将避免我与业务部门的争执。
提前致谢!
(来源: nsourceservices.com)
That would actually still be workable, but this system has another area with a time-sensitive process, lets say for simplicity that it's a web service, that needs to serve up responses very quickly or it will cause a timeout on the other end. The Disk Queue spikes are causing that part to bog down, which is causing timeouts downstream. The end result is actually dropped phone calls in our automated VoiceXML-based IVR, and that's very bad for us. 我们尝试过的方法 我们已经尝试过:
- 维护任务,将系统中的潜在客户数量降至最低。
- 添加明显的索引以帮助优化。
- 在分析器中运行索引调整向导并应用其大部分建议。其中一个建议是在索引中重复整个表格,因此我手动调整了一下以减少工作量。
- 为服务器增加了更多的RAM。原本有点不足,但现在它始终保持着大约8GB的空闲内存,而SQL服务器的配置使用不超过8GB,但它从未使用过2或3个GB以上。我发现这很奇怪。为什么它不把整个表格放入内存中呢?只有500万条记录,还有很多空间。
- 详细查看查询执行计划。我可以看到,此时索引似乎大多数情况下都在发挥作用——大约90%的工作是在排序阶段完成的。
- 考虑将Leads表格分区到另一个物理驱动器中,但我们没有足够的资源,而且似乎也不需要。
最后...
一部分我的感觉是服务器应该能够处理这个问题。考虑到服务器的性能,它是一个不错的四核心服务器,带有16G内存,500万条记录并不算太多。然而,我可以看到排序部分会导致数百万行被访问以返回少量数据。那么在这种情况下,你们通常会怎么做呢?我的直觉告诉我我们或许应该减少一些功能,但如果有办法保持原样,这将避免我与业务部门的争执。
提前致谢!