In-Memory OLTP (Online Transaction Processing) is a feature in SQL Server that allows you to improve the performance of your transactional workloads by keeping the data and indexes in memory. This feature was introduced in SQL Server 2014 and is based on a new storage engine called the Hekaton engine.
There are several benefits of using In-Memory OLTP:
- Improved Performance: By keeping data and indexes in memory, In-Memory OLTP allows for faster data access and manipulation, which can result in significant performance improvements for transactional workloads.
- Reduced Latency: Since data is stored in memory, there is no disk I/O latency, which can significantly reduce the time it takes to perform operations.
- Increased Concurrency: In-Memory OLTP uses a new optimistic multi-version concurrency control (MVCC) mechanism, which allows for increased concurrency and reduces the chances of blocking and deadlocking.
- Reduced Disk I/O: By keeping the data in memory, In-Memory OLTP reduces the need for disk I/O, which can free up resources for other workloads.
To use In-Memory OLTP, you will need to create memory-optimized tables and indexes, which are different from traditional disk-based tables and indexes. Memory-optimized tables are created using the “WITH (MEMORY_OPTIMIZED = ON)” option and support a subset of the T-SQL data types.
You can also use natively compiled stored procedures, which are a special type of stored procedure that is compiled to machine code for faster execution.
In-Memory OLTP is not a replacement for disk-based tables, it’s a complement to them. You can use a combination of memory-optimized tables and disk-based tables to get the best of both worlds: the speed of in-memory and the durability of disk-based storage.
It’s important to note that In-Memory OLTP is not suitable for all workloads and it’s important to understand the limitations and best practices of this feature before using it in production.