{Denodo}Virtual DataPort のトランザクション

 

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


2 フェーズコミットプロトコルを実装しているデータソースのみ、トランザクションに参加できます。

デフォルトの場合
トランザクションを 30 分を超えて継続させることはできません。これを超える場合、トランザクションロールバックされます。
トランザクションを開始したクライアントを 29 秒を超えてアイドル状態にすることはできません。30 秒以上かかると、トランザクションロールバックされます。


変更する場合
SET 'com.denodo.vdb.engine.session.transactionTimeout' = '3600';
SET 'com.denodo.vdb.engine.session.inactiveTransactionTimeout' = '60';

 

前提:キャシュモード OFF

 

-- 1. コミット動作確認

BEGIN;

select col8 from db01.b_tab1 where col1 = 1;

update db01.b_tab1 set col8 = col8||'x' where col1 = 1;

select col8 from db01.b_tab1 where col1 = 1;
-- select col8 from tab1 where col1 = 1;

COMMIT;

select col8 from db01.b_tab1 where col1 = 1;
-- select col8 from tab1 where col1 = 1;

-- 2. ロールバック動作確認

BEGIN;

select col8 from db01.b_tab1 where col1 = 1;

update db01.b_tab1 set col8 = col8||'x' where col1 = 1;

select col8 from db01.b_tab1 where col1 = 1;
-- select col8 from tab1 where col1 = 1;

ROLLBACK;

select col8 from db01.b_tab1 where col1 = 1;
-- select col8 from tab1 where col1 = 1;

 

-- 3. トランザクションタイムアウト動作確認

SET 'com.denodo.vdb.engine.session.transactionTimeout' = '5';

BEGIN;
update db01.b_tab1 set col8 = 'a' where col1 = 1;

COMMIT;


BEGINからCOMMITまで5秒以上まつ
→ error committing transaction: Cannot get Transaction for commit

SET 'com.denodo.vdb.engine.session.transactionTimeout' = '1800';

 


-- 4. アイドルタイムアウト動作確認

SET 'com.denodo.vdb.engine.session.inactiveTransactionTimeout' = '5';

BEGIN;
update db01.b_tab1 set col8 = 'a' where col1 = 1;


COMMIT;

updateからCOMMITまで5秒以上まつ
→ error committing transaction: Cannot get Transaction for commit


SET 'com.denodo.vdb.engine.session.inactiveTransactionTimeout' = '29';