In Robust mode, the Stream operator writes one row in the restart log table for each request issued. This collection of rows in the restart log table can be referred to as the request log. Because a request is guaranteed by the database to either completely finish or completely roll back, the request log will always accurately reflect the completion status of a load operation. Thus, the request log overhead for restart logic decreases as the number of statements packed per request increases. During the checkpoint process, the Stream operator flushes all pending changes from internal storage to the database and also deletes the request log rows. The larger the checkpoint interval, the larger the request log is going to grow. In the event of a Robust mode restart, the Stream operator will use the request log to avoid the erroneous reapplication of database changes.
The Stream operator, in simple (non-robust) mode, provides basic checkpoints. If a restart occurs, then some requests will likely be reprocessed. This is adequate protection under some circumstances. Simple logic is adequate in certain DML statements that can be repeated without changing the results of the operation.
- Inserts into tables that allow duplicate rows (MULTISET tables).
- Self-referencing DML statements like: "UPDATE FOO SET A=A+1...", or "UPDATE FOO SET A = 3 WHERE A=4"