TEMPORARY テーブルで非同期コミットを発行しても問題ありませんか? トランザクションの耐久性が低下しますか?
CREATE GLOBAL TEMPORARY TABLE my_table_tmp (id number) ON COMMIT PRESERVE ROWS;
CREATE TABLE my_table (id number);
BEGIN
INSERT --+ append
INTO my_table_tmp (id)
SELECT rownum
FROM all_objects;
COMMIT WRITE BATCH NOWAIT; -- continue working without waiting on LGWR
INSERT INTO my_table (id)
SELECT id
FROM my_table_tmp;
COMMIT; -- actually preserve transaction
END;
/
編集:
はい、D部分を一瞬バイパスするため、厳密にはACIDではないことを理解しています。問題は、実際の COMMIT のみが使用されているバージョンと異なるシナリオが考えられないため、ACID と「同じくらい良い」かどうかです。それとも私が間違っていて、違いがあるのでしょうか?