クエリのキャッシュ

クエリキャッシュのColdFusionサーバーのメモリにデータベースのクエリの結果が瞬時にデータベースに照会せずに取り出すことができる場所。クエリキャッシュは、最も有用なツールにして、ColdFusionアプリケーションのパフォーマンスを強化するためです。残念なことに、それも1つ以上使用されます。いくつかの注意点クエリキャッシュでは、が関与しているすべてのすべてでは、その雇用することは非常に簡単な手法です。あなたは、次の条件を満たすだけのクエリはキャッシュを考慮する必要があります:

  

このクエリは、大幅に許容される遅延しています。言い換えれば、結果セット内のデータが多いと時間の大幅な長さにわたって安定したため、変更されません。

クエリのスコープ内にあるように、アプリケーションのすべてのユーザーとまったく同じクエリの結果を活用することができます普遍的だ。

クエリを処理するために重要なリソースが必要です。それを見て別の方法は次のとおりです:

遅延の場合のアクセス許可のキャッシュを使用することができます。

スコープの普遍性を可能なキャッシュになります。

処理の要件に必要なキャッシュを確認します。たびにキャッシュするクエリを実行する、メモリ内でのコピーを配置し、メモリを取得するにはColdFusion MXを指示し、そのクエリのベースのバージョンを指定した時間の長さは、例えば、このコードは、cfquery howsをキャッシュする、その結果を12時間に設定した後は、データベースと新しい結果をメモリ内に設定され、キャッシュからのcfqueryタグデータを取得するための別の呼び出しを直接。

 SELECT氏名+'、'+名姓のASユーザ名からAppUser ORDER BYのユーザー名昇順 #UserNameの# 

コードでは、キャッシュ、その結果を後に1セット2002年7月4日の午前は、cfqueryを示して、この時間の前に、cfqueryタグを呼び出し、直接データベースからデータを取得します。

 SELECT氏名+'、'+名姓のASユーザ名からAppUser ORDER BYのユーザー名昇順 #UserNameの# 

CachedWithinされている、より一般的に2つのキャッシュの属性を使用します。 CachedAfter、非常に実用的な使用数が、それは主に指定された時間が、新しいデータをデータベースにいくつかの外部のプロセスから利用可能になるまでしてキャッシュに新しいデータを待つために使用されます。グッドのクエリはキャッシュの候補者は次のとおり:

は、オンラインストアカタログページには、サムネイルや販売した商品の種類の説明を表示します。

は、オンラインストアカタログページには、それぞれの特定のカテゴリのアイテムが表示されます。

オンラインストアでの販売上のアイテムのリストです。

動的に部門のマネージャーの名前など、頻繁に変更されたデータが移入されます選択メニューがあります。

 (呼出しsp_GetCompanies('ジョージア'))  #得意先#、#郵便番号# 

に挿入にOrderItem(SalesOrderIDを、ItemNumber、説明、単価、数量)の値(1、'CAS30 - BLK'、'30 -格安カセット、黒ケース'、1.05、10) 更新InventoryItemのSET AvailableToSell = AvailableToSell - 10のWHERE ItemNumber ='CAS30 - BLK' 

開閉CFTRANSACTIONタグの間にすべて1つのトランザクションと見なされます。このトランザクションについては、にOrderItemテーブルに挿入し、InventoryItemテーブルの更新に成功する必要があります両方の挿入に成功する。これは、トランザクションの全体的なアイデアの:全か無か。場合は、両方のクエリが成功した場合、トランザクションは、両方のクエリの影響をデータベースに書かれているコミットされます。いずれかのクエリが失敗すると、トランザクション全体がまるで何もこれが起こったロールバックされます。前の部分の例では、ColdFusionは、最初とは、トランザクションの終了を制御するためのコマンドが、多くのケースでは、そのようなコントロール自体は、ネイティブデータベースのコマンドを使用してデータベースサーバーで処理され提供されます。それで、どこでトランザクション制御する必要がありますか?単純な答えは、この質問には、常に"データベースサーバーでは、もし可能性があることです。"この答えの理由は、データベースの能力ではなく、ネイティブコマンドや機能を使用して依存することにより、そのトランザクションを制御することですデータベースドライバの機能上のデータベースにトランザクション制御と通信します。データベースの一部のドライバが、データベースへのトランザクション制御コマンドを渡すための機能を持っていないので、これらの場合では、データベース上のストアドプロシージャ内のすべてのトランザクションのコントロールをカプセル化する必要があります単純に、ColdFusionからそれを呼び出す。いくつかの他のドライバは、データベースで使用可能なトランザクション制御コマンドのサブセットのみであり、したがって、対応策としてはありません。今では、ストアドプロシージャ自体の中で制御されているトランザクションを見て通信することができます。このコードは、他の同等の、そのトランザクションは、ストアドプロシージャ内ではなく、ColdFusionで制御される点が異なります。

は、BEGIN TRANSACTIONに挿入にOrderItem(SalesOrderIDを、ItemNumber、説明、単価、数量)の値(1、'CAS30 - BLK'、'30 -格安カセット、黒ケース'、1.05、10)のIFエラー!= 0のBEGIN @ @ @
50001'RAISERRORのにOrderItemを挿入することができませんでした。'ROLLBACK TRANSACTIONを戻り側のUPDATE InventoryItemのSET AvailableToSell = AvailableToSell - 10のWHERE ItemNumber ='CAS30 - BLK'@ @ ERRORののIF = 50002'InventoryItem RAISERRORの0のBEGINを更新できませんでした。 ROLLBACK TRANSACTIONを戻り側のCOMMIT TRANSACTION

構文は少し異なりますが、原理は非常によく似ていますが、ではないが?トランザクションを実装するための両方の方法を学習の場は本当にだけの問題で、次にように、アプリケーション操作を行うことができますが、データベースサーバーの近くに制御します。

記事は、リチャードブライトン提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、"クエリキャッシュ"自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 403 users browsing the articles directory