Understanding Transactions on Memory-Optimized Tables
Transactions access memory-optimized tables using a form of optimistic, multi-version concurrency control. This means that there are different versions of the data. Each transaction operates on its own transactionally consistent version of the database, independent from other concurrently running transactions. In addition, transactions operate under the optimistic assumption that there will be no conflicts with other, concurrent, transactions. This avoids the need to use locks, but does require the system to detect conflicts and terminate one of the conflicting transactions. Conflicts can occur only for write-write transactions and for read-write transactions. If there is a write-write conflict, one write transaction is terminated.
There are similarities between the concurrency control for memory-optimized tables and the concurrency control for disk-based tables for the READ_COMMITTED_SNAPSHOT and SNAPSHOT transaction isolation levels. (For more information about disk-based tables, see Row Versioning-based Isolation Levels in the Database Engine.)
This section on transactions in memory-optimized tables includes the following topics:
For more information, see Control Transaction Durability.