Skip to content

IsolationLevel

IsolationLevel is an abstraction of consistency guarantees to be provided when OptimisticTransaction is committed.

Implementations

Sealed Trait

IsolationLevel is a Scala sealed trait which means that all of the implementations are in the same compilation unit (a single file).

Serializable

Serializable is the most strict consistency guarantee.

Serializable is the isolation level for data-changing commits.

For Serializable commits, OptimisticTransactionImpl adds extra addedFilesToCheckForConflicts (changedData or blindAppend AddFiles) when checkForConflicts.

Serializable is a valid table isolation level.

For operations that do not modify data in a table, there is no difference between Serializable and SnapshotIsolation.

Serializable is used for ConvertToDeltaCommand command.

SnapshotIsolation

SnapshotIsolation is the least strict consistency guarantee.

SnapshotIsolation is the isolation level for commits with no data changed.

For SnapshotIsolation commits, OptimisticTransactionImpl adds no extra addedFilesToCheckForConflicts when checkForConflicts.

For operations that do not modify data in a table, there is no difference between Serializable and SnapshotIsolation.

WriteSerializable

The default IsolationLevel

For WriteSerializable commits, OptimisticTransactionImpl adds extra addedFilesToCheckForConflicts (changedData AddFiles) when checkForConflicts. Blind appends don't (seem to) conflict with WriteSerializable commits.

WriteSerializable a valid table isolation level.

Consistency Guarantee Strictness Ordering

The following are all the isolation levels in descending order of guarantees provided:

  1. Serializable (the most strict level)
  2. WriteSerializable
  3. SnapshotIsolation (the least strict one)

Valid Table Isolation Levels

Not Used in OSS Delta Lake

This feature is not used.

The following are the valid isolation levels that can be specified as the table isolation level: