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;
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';