coldFusion和SQL交互缓慢初始连接

时间:2013-01-24 18:58:34

标签: sql-server coldfusion coldfusion-9 coldfusion-8

我注意到我的Web应用程序对本地托管的SQL服务器所做的第一个查询非常慢。有没有人有这方面的经验,知道我可以做些什么来改善性能/延迟。

我有一台带有CF9的本地测试服务器,而活动服务器正在使用CF8。在这两种情况下,SQL都在同一台机器上,并且存在轻微的SQL版本差异:10.5 RTM与10.0.5 SP3。 (虽然生产服务器也在另一个IP上运行另一个sql数据库9.0)

看起来查询速度很快,但初始连接速度很慢,我可以尝试改进这个问题的任何想法吗?

3 个答案:

答案 0 :(得分:1)

延迟很可能是通过编译和创建执行计划来创建的。我建议使用存储过程。

答案 1 :(得分:1)

我们在这里遇到同样的问题。每个请求的第一个查询所花费的时间比任何下一个查询要长得多。

我们在SQL Server中创建了两个表来说明这种情况。表,tableA和tableB都是相同的。一个是另一个的副本。

如果我们执行此操作:

<cfquery datasource="test" name="queryA"><!--- This query takes 104 milliseconds --->
    SELECT * FROM tableA WHERE id = 1
</cfquery>

<cfquery datasource="test" name="queryB"><!--- This query takes 3 milliseconds --->
    SELECT * FROM tableB WHERE id = 1
</cfquery>

但是,如果我恢复更改查询的顺序,则较慢的查询仍然是第一个:

<cfquery datasource="test" name="queryB"><!--- This query takes 104 milliseconds --->
    SELECT * FROM tableB WHERE id = 1
</cfquery>

<cfquery datasource="test" name="queryA"><!--- This query takes 3 milliseconds --->
    SELECT * FROM tableA WHERE id = 1
</cfquery>

如您所见,差异很重要。

查询非常简单,主键查询和不超过10条记录的表。

我们在这里有ColdFusion 10,但它也在ColdFusion 9和MS SQL Server 2008中发生。

答案 2 :(得分:0)

我的猜测是,第一个连接速度慢的原因是首次建立连接时,会检查凭据。在建立初始连接之后,后续查询要快得多。这只是一个理论......

以下是更多信息:

我不确定默认设置是什么,但可能值得进一步研究。