{Denodo}CONTEXT句

 

https://community.denodo.com/docs/html/browse/8.0/jp/vdp/vql/queries_select_statement/context_clause/context_clause

 

<context information> ::=
    'cache' = { 'on' | 'off' }                   // 'on' by default
  | 'cache_invalidate' = { 'matching_rows' | 'matching_pk' | 'all_rows' }   // 'matching_rows' by default
  | 'cache_preload' = { 'true' | 'false' }       // 'false' by default
  | 'cache_return_query_results' = { 'true' | 'false' }  // 'true' by default
  | 'cache_wait_for_load' = { 'true' | 'false' }    // 'false' by default

 


前提: 下記を作成
 cache Full モードの基本ビュー
 基本ビューを参照するインタフェースビュー
 インタフェースビューを参照する統合ビュー


(確認事項1) インタフェースビューでキャッシュを作成できるか?
→ できない

(確認事項2) 統合ビューでキャッシュを作成できるか?
→ できる

(確認事項3) インタフェースビューでCONTEXT句によりキャッシュをバイパスできるか?
→ できる

(確認事項4) 統合ビューでCONTEXT句によりキャッシュをバイパスできるか?
→ できる


CONTEXT ('cache' = 'on')で、統合ビューがcache ONの場合、統合ビューのcacheが使用される。
CONTEXT ('cache' = 'on')で、統合ビューがcache OFFの場合、基本ビューがcache ONであればそのcacheが使用される。
CONTEXT ('cache' = 'on')で、インタフェースビューの場合、基本ビューがcache ONであればそのcacheが使用される。

CONTEXT ('cache' = 'off')の場合、基本ビューや統合ビューのcacheは使用されない。


truncate table tab1;

insert into tab1(col1) values(1);
insert into tab1(col1) values(2);
insert into tab1(col1) values(3);


select * from tab1;


-- 既存の全データを無効化してキャッシュをロードする

SELECT *
FROM db01.b_tab1
CONTEXT (
      'cache' = 'on'
    , 'cache_preload' = 'true'
    , 'cache_invalidate' = 'all_rows'
    , 'cache_wait_for_load' = 'true'
    , 'cache_return_query_results' = 'false')
;

SELECT *
FROM db01.tab1
CONTEXT (
      'cache' = 'on'
    , 'cache_preload' = 'true'
    , 'cache_invalidate' = 'all_rows'
    , 'cache_wait_for_load' = 'true'
    , 'cache_return_query_results' = 'false')
;


SELECT * FROM db01.b_tab1 CONTEXT ('cache' = 'on');
SELECT * FROM db01.b_tab1 CONTEXT ('cache' = 'off');


SELECT * FROM db01.i_tab1 CONTEXT ('cache' = 'on');
SELECT * FROM db01.i_tab1 CONTEXT ('cache' = 'off');


SELECT * FROM db01.tab1 CONTEXT ('cache' = 'on');
SELECT * FROM db01.tab1 CONTEXT ('cache' = 'off');