Set Isolation Levels

Use DSI isolation levels to prevent loss of parts of transactions when parallel DSI is enabled, and the replicate table is configured for row-level locking.

In these cases, the order of individual operations within transactions may not match that seen at the primary, even if the transactions themselves are committed in proper order.

For example, if the second transaction to commit updates a row inserted by the first transaction to commit, the update may take place before the commit. In this case, the transactions commit correctly, but the update is lost, even though the insert remains.

To avoid out-of-sequence DML operations, set dsi_isolation_level to 3. In the example, if dsi_isolation_level is 3, the second transaction to commit acquires a range lock on the as-yet nonexistent row it intends to update, which causes a deadlock with the first transaction to commit. The data server declares a database resource deadlock. Replication Server rolls back all open transactions and serially reapplies them, and the update is not lost.