ASP.NET / SQL 2008性能问题
|
我们开发了一个带有搜索屏幕的系统,看起来像这样: http://demo1.nsourceservices.com/images/logos/stackoverflow1.png 如您所见,有一些相当严肃的搜索功能.您可以使用状态,渠道,语言,广告系列类型的任意组合,然后按名称等缩小范围. 然后,一旦您搜索并在底部弹出了潜在客户,您就可以对标题进行排序. 该查询使用ROWNUM来执行分页方案,因此我们一次只返回70行. 问题 即使我们只返回70行,也会进行大量的IO和排序.这当然是有道理的. 这总是会给磁盘队列带来一些小的尖峰.当我们达到300万个潜在客户时,它开始放慢速度,现在我们已经接近5,磁盘队列有时会挂起一两秒或两个. 这实际上仍然是可行的,但是这个系统还有另一个区域,它有一个时间敏感的过程,简单地说,它是一个Web服务,需要非常快速地提供响应,否则会导致另一端超时.磁盘队列峰值导致该部分陷入困境,导致下游超时.最终结果实际上是我们基于VoiceXML的自动IVR中的电话掉线,这对我们来说非常糟糕. 我们尝试过什么 我们尝试过: >维护任务,将系统中的引线数量减少到最低限度. 在结束… 我的一部分感觉服务器应该能够处理这个问题.考虑到该服务器的强大功能,500万条记录并不是那么多,这是一个体面的四核,有16个内存.但是,我可以看到排序部分如何触及数百万行只是为了返回少数几行. 那么你在这样的情况下做了什么?我的直觉是我们应该削减一些功能,但是如果有一种方法可以保持这种完整性,这将节省我与业务部门的战争. 提前致谢! 解决方法通过改进SQL查询,可以经常改进数据库瓶颈.如果不知道它们是什么样的,请考虑创建一个可按计划填充的运营数据存储或数据仓库.有时可能会使复杂的关系数据库变得扁平化.它可以使查询运行得更快,并且可以更轻松地优化查询,因为模型非常平坦.这也可以使您更容易确定是否需要向上或向外扩展数据库服务器.容量和增长分析可能有助于进行该呼叫. 事务性/高度规范化的数据库通常不像ODS或数据仓库那样可扩展. 编辑:您的ORM可能也有可能支持的优化,这可能值得研究,而不是仅仅研究如何优化它发送到您的数据库的查询.对报告完全绕过ORM可能是完全控制查询以获得更好性能的一种方法. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 网页中的电子签名[已关闭]
- asp.net – 更改单个URL查询字符串值
- asp.net:如何在button onclick上使用eventargs进行参数传递
- asp.net-web-api – 在Visual Studio中启动WebAPI项目的最简
- asp.net-mvc – IIS劫持CORS Preflight OPTIONS请求
- 调试w /附加到进程启动ASP.NET开发服务器
- 实体框架 – 具有实体框架的MVC MiniProfiler 5模型第一个错
- asp.net – 连接到源文件XYZ的撤消管理器时出错
- asp.net-core – 如何在使用asp.net 5时更改登录URL
- asp.net – 基于web.config的url重写的绝对最小内容是什么?
- asp.net-mvc – 将DTO转换为ViewModel的位置?
- 在ASP.Net应用程序中,我可以获得请求包含哪些安全
- asp.net-mvc – 如何使用MSBuild部署一个ASP.NET
- asp.net-mvc – 如何从mvc中的控制器中设置隐藏字
- asp.net核心 – 在ASP.NET Core的WebDeploy期间,
- asp.net – asp文本框限制字符数?
- 使用log4net和ASP.NET跟踪会话变量
- asp.net-mvc-3 – 如何在MVC3中限制FileUpload中
- 在asp.net中引用jquery的最佳方法是什么?
- 如何使用ASP.NET MVC项目启动Azure模拟器
