SqlServer Express性能下降
我正在测试.NET Web应用程序。我这样做的原因有两个:我想看看现实环境下的性能如何,并确保我们在测试过程中没有遗漏任何问题。应用程序中有30个并发用户正在使用它,就像他们在正常工作期间一样。大多数用户打开了应用程序的多个窗口。
- 10位使用者:不错
- 20位用户:放慢速度
- 30位用户:非常非常慢,但没有超时
它已加载到生产服务器上。它是一台虚拟服务器,具有2.66G Hz Xeon处理器和2 GB RAM。我们正在使用Win2K3 SP2. 我们已经加载了.NET 1.1和2.0,并且正在使用SQLExpress SP1.
我们重新检查了所有表后索引上的索引,这些索引都应该是正确的。
我们如何改善应用程序的性能?
解决方案
回答
- 我们可能会遇到并发问题,具体取决于应用程序的运行方式。尝试使用" nolock"关键字进行读取。
- 尝试为列添加表别名(并避免使用SELECT *),这有助于MSSQL,因为它不必"猜测"列来自哪个表。
- 如果尚未迁移到SPROC,则MSSQL可以为给定查询的正常结果集更好地索引数据。
- 尝试遵循SPROCS的执行计划,以确保它们正在使用我们认为是的索引。
- 对数据库运行跟踪以查看传入请求的外观。我们可能会注意到一个特定的SPROC反复运行:通常,如果可能的话,这是在客户端上缓存响应的好兆头。 (查找列表等)
回答
更新:看起来SQL Server Express不是问题,因为他们在该应用程序的先前版本中使用的是同一产品。我认为下一步是确定瓶颈。如果我们确定它在数据库层中,则建议我们进行探查器跟踪并减少最昂贵查询的执行时间。
这是我用来从SQL Server动态管理视图(DMV)和相关动态管理功能(DMF)收集统计信息的另一个链接。不知道我们是否可以在Express版本中使用。
发现隐藏数据以优化应用程序性能。
我们是否正在将SQL Server Express用于Web应用程序?据我所知,它对生产部署有一些限制。
SQL Server Express是免费的,并且可以由ISV重新分发(取决于协议)。 SQL Server Express是学习和构建台式机和小型服务器应用程序的理想选择。此版本是独立软件供应商,非专业开发人员和构建客户端应用程序的爱好者的最佳选择。如果我们需要更高级的数据库功能,则可以将SQL Server Express无缝升级到SQL Server的更复杂版本。
回答
这只是我想到的,但是请检查一下,当我们有20个以上的用户时,SQL Server使用了多少内存。Express版本的局限之一是它的内存限制为1GB。因此,由于Express的限制,可能没有足够的内存可用于服务器,这可能只是一个简单的问题。
回答
我将检查虚拟服务器上的磁盘性能。如果这是问题之一,我建议将数据库放在单独的主轴上。
更新:按照Gulzar的建议移动到单独的主轴或者升级SQL Server版本。
回答
确保在检索数据后关闭连接。
回答
运行SQL事件探查器以查看发送到数据库的查询。查找以下查询:
- 返回太多数据
- 构造不佳
- 被执行太多次