2012-04-02 12 views
1

私はオラクル問合せでは、10分から20分でが必要ですが、ユーザーはそれらのデータをすぐに参照します。データはの一定の時間に保存され、データはライブであり、1時間ごとに新しいデータが追加されます。これらのデータをキャッシュして、クエリに時間がかからないようにすることは可能ですか?特定の時間のoracleデータベースにキャッシュとしてデータを格納する

Note:I am using linked server 

答えて

2

はいこれは11gの新機能の1つです。 OracleはRESULT_CACHE_MODEでビルドします。このモードでは、結果セットのクエリをキャッシュすることができます。

これを初期化する方法は3つあります。 あなたの特定のクエリでのSYS変数として1セット(システムを変更する) 2.現在のセッション変数(セッションを変える) 3.使用ヒント

このパラメータをデフォルトのMANUALに設定されています。 SQLセッションでこのクエリを実行することで確認できます。

SQL> SELECT value FROM v$parameter WHERE name = 'result_cache_mode'; 

私の個人的な好みは、デフォルト値MANUALを維持し、私は私だけがキャッシュされたいそれらのカップルを持っているとしてキャッシュするクエリをヒントすることです。こうすることで、クエリがキャッシュされ、デフォルトではキャッシュされないクエリを選択できます。

特定のクエリをキャッシュするには、クエリに/ * + RESULT_CACHE * /ヒントを設定する必要があります。ここに例があります。

SELECT /*+ RESULT_CACHE */ foo, 
     bar, 
     lorem 
FROM dual 
WHERE foo > 10; 

希望すると、これが役立ちます。

EDIT:あなたはまた、サイズが許容され、あなたにも見て、システム変数result_cache_remote_expirationに有効期限を設定することができるかどうかを確認するには、これらのシステム変数を確認する必要があります

SELECT name, value, isdefault 
FROM v$parameter 
WHERE name LIKE 'result_cache%'; 
関連する問題