【问题标题】:coldFusion and SQL interaction slow initial connectionColdFusion和SQL交互初始连接慢
【发布时间】:2013-05-24 00:38:25
【问题描述】:

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

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

看起来查询很快,但初始连接很慢,有什么想法可以尝试改进吗?

【问题讨论】:

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


    【解决方案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】:

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

      【讨论】:

      • 我对存储过程完全陌生。我用它们来创建备份脚本。从 Coldfusion 调用查询时如何使用它们?
      【解决方案3】:

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

      这里有更多信息:

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

      【讨论】:

        猜你喜欢
        • 2014-08-04
        • 1970-01-01
        • 2021-05-14
        • 1970-01-01
        • 1970-01-01
        • 2020-02-01
        • 1970-01-01
        • 2020-06-12
        • 2020-05-31
        相关资源
        最近更新 更多