0

ローカルでホストされているSQLサーバーに対してWebアプリが行う最初のクエリが非常に遅いことに気づきました。誰かがこれを経験していて、パフォーマンス/レイテンシーを改善するために私が何ができるか知っていますか?

CF9を備えたローカルテストサーバーがありますが、アクティブサーバーはCF8を使用しています。どちらの場合も、SQLは同じマシンにあり、SQLのバージョンにわずかな違いがあります。10.5RTMと10.0.5SP3です。(本番サーバーも別のSQLデータベース9.0を別のIPで実行していますが)

クエリは速いように見えますが、最初の接続は遅いです。これを改善するために試みることができることについて何かアイデアはありますか?

4

3 に答える 3

1

遅延は、実行プランをコンパイルして作成することによって発生する可能性があります。ストアドプロシージャを使用することをお勧めします。

于 2013-01-24T19:01:34.433 に答える
1

ここでも同じ問題が発生しています。すべてのリクエストの最初のクエリは、次のクエリよりも大幅に時間がかかります。

状況を説明するために、SQLServerに2つのテーブルを作成しました。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レコードを超えないテーブルに対してクエリを実行します。

ここにはColdFusion10がありますが、ColdFusion9とMSSQLServer2008でも発生しています。

于 2013-05-22T23:49:37.310 に答える
0

私の推測では、最初の接続が遅いのは、接続が最初に確立され、資格情報がチェックされるためです。最初の接続が確立された後、後続のクエリははるかに高速になります。それはただの理論ですが...

ここにいくつかの詳細があります:

デフォルトがどのように設定されているかはわかりませんが、さらに調べる価値があるかもしれません。

于 2013-05-23T16:30:11.897 に答える