1

これが私のコードです

<cfquery name="employeeData" datasource="xyz" cachedwithin="#CreateTimeSpan(0,0,60,0)#">
    SELECT employee, salary
    FROM employee
</cfquery>

<cfquery name="wellPaidEmployee" dbtype="query">
    SELECT employee, salary
    FROM employeeData WHERE salary > <cfqueryparam cfsqltype="cf_sql_integer" value="10000">
</cfquery>

状態:
最初のクエリ EmployeeData が何らかの問題によりタイムアウトになり、「クエリがタイムアウトしました」というエラーがスローされます。

質問:

  1. 次の呼び出しで、クエリ EmployeeData が実行されますか、それとも cachewithin を使用してキャッシュしたため、キャッシュでクエリ タイムアウト エラーが発生しますか?
  2. 最初の実行と次の実行で、wellPaidEmployee はどうなりますか?
4

2 に答える 2

0

コメントが長すぎます。

クエリのタイムアウトとキャッシュの期限切れは、2 つの異なるものです。

<cfquery name="employeeData" datasource="xyz" cachedwithin="#CreateTimeSpan(0,0,60,0)#">
SELECT employee, salary
FROM employee
</cfquery>

最初にヒットしたときに実行されます。また、データを 60 分間保存します。そのデータが 60 分以内に再度アクセスされると、キャッシュ タイムアウトはゼロにリセットされます。理論的には、このデータが 60 分ごとにアクセスされる場合、データベースにヒットすることはありません。

はどうかと言うと

<cfquery name="wellPaidEmployee" dbtype="query">
SELECT employee, salary
FROM employeeData WHERE salary > <cfqueryparam cfsqltype="cf_sql_integer" value="10000">
</cfquery>

基になるデータがキャッシュから取得されたかどうかはわかりません。結果を返すだけです。

「クエリがタイムアウトしました」というエラーが発生した場合。それはまったく別の問題です。ColdFusion がデータベースに接続する方法に問題があるか、データベース自体に問題があります。

于 2019-08-12T21:36:55.167 に答える