This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreDid you hear? There's a new SQL AI Developer certification (DP-800). Start preparing now and be one of the first to get certified. Register now
Fabric Data Warehouse (DW) supports ACID-compliant transactions using standard T-SQL (BEGIN TRANSACTION, COMMIT, ROLLBACK) and uses Snapshot Isolation (SI) as its exclusive concurrency control model. All operations within a transaction are treated atomically—either all succeed or all fail. This ensures that each transaction operates on a consistent snapshot of the data as it existed at the start of the transaction, which means.
BEGIN TRANSACTION statement, aligning with SQL Server’s snapshot isolation behavior.While this model enables high concurrency for reads, it introduces the possibility of write-write conflicts which are common under SI when multiple transactions attempt to modify the same data concurrently.
Write-write conflicts in Fabric Data Warehouse are fundamentally different from lock-based conflicts. For more information on lock conflicts, refer to Understanding Locking and DDL Blocking in Microsoft Fabric Data Warehouse blog post.
A write-write conflict (aka update conflict) occurs when two or more concurrent transactions attempt to perform conflicting operations such as UPDATE, DELETE, MERGE or TRUNCATE on the same table. Under SI, only the first transaction to commit will succeed; others will be aborted with a conflict error.
MERGE Behavior: Even when MERGE transactions only result in append-only changes, they are still subject to write-write conflict detection. When MERGE transaction affects different rows than other concurrent DML transactions, it may encounter this error if MERGE is not the first transaction to commit: 'Snapshot isolation transaction aborted due to update conflict.'
This granularity means that even if two transactions touch different rows, they will conflict if they target the same table. Only the first transaction to commit will succeed. Others will be rolled back with errors such as: 'Snapshot isolation transaction aborted due to update conflict...'
This behavior is by design and ensures consistency, but it can be disruptive in high-throughput pipelines.
Fabric DW currently tracks write-write conflicts at the table level, meaning even if two transactions modify different rows in the same table, they can still conflict. Conflicts arise from two primary sources:
UPDATE, DELETE, MERGE even if the user is modifying different rows.Example: A user updates a table while compaction rewrites it. If compaction commits first, the user’s transaction fails due to a write-write conflict.
Refer to Data Compaction documentation to learn more about compaction.
Conflicts can impact performance, reliability, and user experience, especially in high-concurrency environments. Understanding how they work and how to mitigate them is essential for building resilient data pipelines and applications in Fabric DW.
UPDATE, DELETE, MERGE on the same table.UPDATE, DELETE, MERGE
UPDATE, DELETE, MERGE, and TRUNCATE statements.As part of our ongoing investments to improve concurrency and reliability in Fabric Data Warehouse, we’re introducing Compaction Preemption, a new capability that intelligently avoids write-write conflicts between background compaction tasks and user operations. As of October 2025, Compaction preemption is enabled and is handled entirely by the system to reduce write-write conflicts between user workloads and system compaction tasks in Fabric DW, which uses snapshot isolation for concurrency control.
Fabric DW uses Snapshot Isolation (SI), where write-write conflicts occur if two transactions modify the same table concurrently. Background compaction, which rewrites table files to optimize storage can silently conflict with user operations like UPDATE, DELETE, or MERGE, causing failures.
Compaction Preemption introduces a shared lock mechanism:
Compaction does not take a lock, ensuring it never blocks user workloads.
Users can still create write-write conflicts through their own workload; this feature only addresses conflicts involving compaction, not user-initiated conflicts. If users use explicit transactions and perform non-conflicting work (like inserts) before a conflicting operation (update, delete, merge), compaction may still commit successfully, and a subsequent user operation could still fail due to a conflict.
We are actively investing in improvements to improve concurrency –
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.