Database startup and recovery
Recovery of memory-optimized tables is performed in an optimized manner compared to disk-based tables.
The In-Memory OLTP engine gathers information on which checkpoints are currently valid and their locations. Each checkpoint file pair (delta and data) is identified, and the delta file is used to filter out rows from the data file (delete data doesn't need to be recovered). The In-Memory OLTP engine creates one recovery thread per CPU core, allowing for parallel recovery of memory-optimized tables. These recovery threads load the data from the data and delta files, creating the schema and all indexes. Once the checkpoint files have been processed, the tail of the transaction log is replayed from the timestamp of the latest valid checkpoint.
The ability to process recovery in parallel is a huge performance gain and allows objects that are memory-optimized to be recovered in a much shorter time than if only serial recovery was available.