Skip to content

Latest commit

 

History

History
60 lines (39 loc) · 5.11 KB

in-memory-database.md

File metadata and controls

60 lines (39 loc) · 5.11 KB
title description author ms.author ms.date ms.service ms.custom ms.topic helpviewer_keywords
In-memory database systems features and technologies
In-memory database systems and technologies
briancarrig
brcarrig
10/30/2019
sql
linux-related-content
conceptual
in-memory systems
in-memory technologies
in-memory features
database, in-memory database
system, in-memory system
features, in-memory features
in-memory

In-memory database systems and technologies

[!INCLUDEsqlserver]

This page is intended to serve as a reference page for in-memory features and technologies within SQL Server. The concept of an in-memory database system refers to a database system that has been designed to take advantage of larger memory capacities available on modern database systems. An in-memory database may be relational or non-relational in nature.

It is assumed often, that the performance advantages of an in-memory database system are mostly owing to it being faster to access data that is resident in memory rather than data that sitting on even the fastest available disk subsystems (by several orders of magnitude). However, many SQL Server workloads can fit their entire working set in available memory. Many in-memory database systems can persist data to disk and may not always be able to fit the entire data set in available memory.

A fast volatile cache that fronts a considerably slower but durable media has been predominant for relational database workloads. It necessitates particular approaches to workload management. The opportunities presented by faster memory transfer rates, greater capacity, or even persistent memory facilitates the development of new features and technologies that can spur new approaches to relational database workload management.

Hybrid buffer pool

[!INCLUDEsqlserver]

Hybrid buffer pool expands the buffer pool for database files residing on byte-addressable persistent memory storage devices for both Windows and Linux platforms with [!INCLUDEsql-server-2019].

Memory-optimized tempdb metadata

[!INCLUDEsqlserver]

[!INCLUDEsql-server-2019] introduces a new feature that is memory-optimized tempdb metadata, which effectively removes some contention bottlenecks and unlocks a new level of scalability for tempdb-heavy workloads.

For more information on recent tempdb improvements including memory-optimized metadata in [!INCLUDEsssql19-md] and newer features, see Improve scalability with system page latch concurrency enhancements in SQL Server 2022 and watch System Page Latch Concurrency Enhancements (Ep. 6) | Data Exposed.

In-memory OLTP

[!INCLUDEsqlserver]

In-memory OLTP is a database technology available in [!INCLUDEssNoVersion] and [!INCLUDEssSDS] for optimizing performance of transaction processing, data ingestion, data load, and transient data scenarios.

Configuring persistent memory support for Linux

[!INCLUDE SQL Server - Linux]

[!INCLUDEsqlv15] describes how to configure persistent memory (PMEM) using the ndctl utility persistent memory.

Persisted log Buffer

Service Pack 1 of [!INCLUDEssSQL16] introduced a performance optimization for write intensive workloads that were bound by WRITELOG waits. Persistent memory is used to store the log buffer. This buffer, which is small (20 MB per user database), has to be flushed to disk in order for the transactions written to the transaction log to be hardened. For write intensive OLTP workloads, this flushing mechanism can become a bottleneck. With the log buffer on persistent memory, the number of operations required to harden the log is reduced, improving overall transaction times and increasing workload performance. This process was introduced as Tail of Log Caching. However, there was a perceived conflict with Tail Log Backups and the traditional understanding that the tail of the log was the portion of the transaction log hardened but not yet backed up. Since the official feature name is Persisted Log Buffer, this is the name used here.

See Add persisted log buffer to a database.