Skip to main content

Concurrency in Iceberg Tables

Dremio supports running most combinations of concurrent SQL commands on Iceberg tables. To take a few examples, two INSERT commands can run concurrently on the same table, as can two SELECT commands, or an UPDATE and an ALTER command.

However, Apache Iceberg’s Serializable Isolation level with non-locking table semantics can result in scenarios in which write collisions occur. In these circumstances, the SQL command that finishes second fails with an error. Such failures occur only for a subset of combinations of two SQL commands running concurrently on a single Iceberg table.

This table shows which types of SQL commands can and cannot run concurrently with other types on a single Iceberg table:

  • Y: Running these two types of commands concurrently is supported.
  • N: Running these two types of commands concurrently is not supported. The second command to complete fails with an error.
  • D: Running two OPTIMIZE commands concurrently is supported if they run against different table partitions.
SQL commands that cause concurrency conflicts