【问题标题】:SqlServer Express slow performanceSql Server Express 性能缓慢
【发布时间】:2008-09-12 14:05:35
【问题描述】:

我正在对 .NET Web 应用程序进行压力测试。我这样做有两个原因:我想看看在现实世界条件下的性能如何,同时确保我们在测试期间没有遗漏任何问题。我们在应用程序中有 30 个并发用户使用它,就像他们在正常工作过程中一样。大多数用户都打开了应用程序的多个窗口。

  • 10 位用户:还不错
  • 20 位用户:放慢速度
  • 30 位用户:非常非常慢,但没有超时

它已加载到生产服务器上。它是具有 2.66G Hz Xeon 处理器和 2 GB RAM 的虚拟服务器。我们正在使用 Win2K3 SP2。我们已经加载了 .NET 1.1 和 2.0,并且正在使用 SQLExpress SP1。

我们重新检查了所有表的索引,它们都是应有的。

我们如何提高应用程序的性能?

【问题讨论】:

    标签: asp.net performance subsonic sql-server-express


    【解决方案1】:

    这只是我想到的,但是当您有 20 个以上的用户时,请检查 SQL Server 使用了多少内存 - Express 版本的限制之一是它是 limited to 1GB of RAM。因此,由于 Express 的限制,没有足够的内存可供服务器使用,这可能只是一个简单的问题。

    【讨论】:

      【解决方案2】:
      1. 您可能会遇到并发问题,具体取决于应用程序的运行方式。尝试使用“nolock”关键字进行阅读。

      2. 尝试为列添加表别名(并避免使用 SELECT *),这有助于 MSSQL,因为它不必“猜测”列来自哪个表。

      3. 如果您还没有,请转到 SPROC,这允许 MSSQL 为给定查询的正常结果集更好地索引您的数据。

      4. 尝试遵循 SPROCS 的执行计划,以确保它们使用您认为的索引。

      5. 对您的数据库运行跟踪以查看传入请求的外观。您可能会注意到一个特定的 SPROC 正在一遍又一遍地运行:如果可能的话,通常是在客户端缓存响应的好兆头。 (查找列表等)

      【讨论】:

      • 我们对 NOLOCK 非常细致,我们使用视图读取带有别名的数据,使用 SPROCS 来处理 CRUD 和 SubSonic。
      • 我不明白为什么这被否决了。所有这些建议都是相关的
      • 我同意。即使在这里不完全相关,它们也是有效的并且可能对其他人有用。投票..
      • 移动到 SPROCS?这是什么2001?使用 SPROCS 是有原因的,但性能更好。不是其中之一。
      【解决方案3】:

      更新:看起来 SQL Server express 不是问题,因为他们在以前版本的应用程序中使用相同的产品。我认为您的下一步是确定瓶颈。如果您确定它位于数据库层,我建议您进行分析器跟踪并缩短最昂贵查询的执行时间。

      这是我用于从 SQL Server 动态管理视图 (DMV) 和相关动态管理功能 (DMF) 收集统计信息的另一个链接。不确定我们是否可以在 Express 版中使用。 Uncover Hidden Data to Optimize Application Performance.


      您是否将 SQL Server Express 用于 Web 应用程序?据我所知,它对生产部署有一些限制。

      SQL Server Express 是免费的,可以由 ISV 重新分发(根据协议)。 SQL Server Express 是 学习和构建桌面和小型服务器应用程序的理想选择。此版本是独立软件供应商、非专业开发人员和构建客户端应用程序的爱好者的最佳选择。如果您需要更高级的数据库功能,SQL Server Express 可以无缝升级到更高级的 SQL Server 版本。

      【讨论】:

      • 是的,我们将 SQL Server Express 用于 Web 应用程序。我们在经典 asp 中使用相同的 SQLExpress DB 有相同的应用程序,没有任何问题。此应用程序是经典版本到 .NET 版本的升级
      • 限制是 RAM、CPU 内核和 HDD 使用率:microsoft.com/sql/prodinfo/features/compare-features.mspx
      【解决方案4】:

      我会检查虚拟服务器上的磁盘性能。如果这是问题之一,我建议将数据库放在单独的主轴上。

      更新:按照 Gulzar 的恰当建议,移动到单独的主轴或升级 SQL Server 版本。

      【讨论】:

        【解决方案5】:

        确保在检索数据后关闭连接。

        【讨论】:

          【解决方案6】:

          运行 SQL Profiler 以查看发送到数据库的查询。查找符合以下条件的查询:

          • 返回的数据过多
          • 结构不佳
          • 执行次数过多

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-07-02
            • 1970-01-01
            • 1970-01-01
            • 2012-05-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多