使用 Flex 时 SQL Server 需要很长时间才能将数据返回到 ColdFusion

Posted

技术标签:

【中文标题】使用 Flex 时 SQL Server 需要很长时间才能将数据返回到 ColdFusion【英文标题】:SQL Server taking a long time to return data to ColdFusion when using Flex 【发布时间】:2009-07-14 19:12:59 【问题描述】:

我正在开发一个 Flex 应用程序,该应用程序通过 Flash Remoting 连接到带有 SQL Server 2005 数据库的 ColdFusion 8。大多数时候,一切都运行良好。但是,有时,SQL Server 将存储过程调用中的数据返回给 ColdFusion 需要特别长的时间;从 CF 向 Flex 返回数据非常快。发生这种情况时,我可以从 SQL Server 上的 Management Studio 或 CF 服务器上的 ColdFusion 页面运行完全相同的调用并立即获得结果。最近发生的问题大约需要 90 秒才能将数据返回到 CF。在 90 秒的窗口中,我能够在 Management Studio 中多次运行存储过程。

我尝试过使用不同的驱动程序,但这似乎并不重要。我还一直关注服务器性能,并且在发生这种情况时没有发现任何异常情况。有没有人见过这种行为?关于我应该寻找什么的任何想法。

【问题讨论】:

SQL Server 位于何处?与您的 CF 应用程序服务器在同一台机器上?远离它? 听起来像是并发/锁定问题... 【参考方案1】:

虽然它运行缓慢,但您可以对您的 SQL Server 运行“sp_who2”吗?如果这是一个阻塞问题,您会在“BlkBy”列中看到具有值的行,这意味着它们正在等待另一个进程完成才能继续。

如果是这种情况,则需要进行其他故障排除,以便找出导致阻塞的原因。 This article 提供锁定和故障排除块的概述。如果这是您的问题,请更新您的问题并添加更多详细信息,我们可以帮助您解决问题!

【讨论】:

【参考方案2】:

您确定在 sp 中运行的查询每次都是相同的吗?例如,当它变慢时,查询是否有可能具有不同的排序顺序?可能 10 次中有 9 次,查询快速返回,而第 10 次很慢 b/c 您获取的数据正在按未编入索引的某些列进行排序?

在这些情况下,我会尝试设置 SQL Trace(使用 sql profiler)并让它运行一段时间。一旦出现这种情况,就让它跑过去,然后分析痕迹。毫无疑问地确认正在运行的查询与同一 sp 的其他执行相同

【讨论】:

以上是关于使用 Flex 时 SQL Server 需要很长时间才能将数据返回到 ColdFusion的主要内容,如果未能解决你的问题,请参考以下文章

我使用flex 通过RemoteObject与java交互,java访问SQL Server2005,但是总是返回NaN。

需要flex textarea来包装中间词

标量函数在存储过程中使用时在 SQL Server 中发生请求超时问题

SQL行转列列转行(SQL Server版)

SQL Server存储过程插入长字符串时出错:字符串后引号未闭合

在使用Flex Builder 3和BlazeDS时,如何解决“Server.processing”错误的“NullPointerException”?