Erstellen und Verwalten von Speicher für speicheroptimierte ObjekteCreating and Managing Storage for Memory-Optimized Objects

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL DatabaseAnwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database

Die In-Memory-OLTPIn-Memory OLTP-Engine ist in SQL ServerSQL Serverintegriert, was es Ihnen ermöglicht, sowohl speicheroptimierte als auch (traditionelle) datenträgerbasierte Tabellen in der gleichen Datenbank zu haben.The In-Memory-OLTPIn-Memory OLTP engine is integrated into SQL ServerSQL Server, which lets you have both memory-optimized tables and (traditional) disk-based tables in the same database. Jedoch unterscheidet sich die Speicherstruktur für speicheroptimierte Tabellen von der für datenträgerbasierte Tabellen.However, the storage structure for memory-optimized tables is different from disk-based tables.

Speicher für datenträgerbasierte Tabelle weisen die folgenden Schlüsselattribute auf:Storage for disk-based table has following key attributes:

  • Einer Dateigruppe zugeordnet, und die Dateigruppe enthält eine oder mehrere Dateien.Mapped to a filegroup and the filegroup contains one or more files.

  • Jede Datei wird in Blöcke mit 8 Seiten unterteilt, und jede Seite hat eine Größe von 8.000 Byte.Each file is divided into extents of 8 pages and each page is of size 8K bytes.

  • Ein Block kann über mehrere Tabellen gemeinsam genutzt werden, aber es gibt eine 1:1-Zuordnung zwischen der zugeordneten Seite und der Tabelle oder dem Index.An extent can be shared across multiple tables, but a there is 1-to-1 mapping between an allocated page and the table or index. Das bedeutet, dass eine Tabelle keine Zeilen von zwei oder mehr Tabellen oder Indizes enthalten kann.In other words, a page can't have rows from two or more tables or index.

  • Die Daten werden je nach Bedarf in den Arbeitsspeicher (der Pufferpool) verschoben, und die geänderten oder neu erstellten Seiten werden asynchron auf den Datenträger geschrieben, wobei hauptsächlich zufällige Ein- und Ausgaben generiert werden.The data is moved into memory (the buffer pool) as needed and the modified or newly created pages are asynchronously written to the disk generating mostly random IO.

Speicher für speicheroptimierte Tabellen weisen die folgenden Schlüsselattribute auf:Storage for memory-optimized tables has following key attributes:

  • Alle speicheroptimierten Tabellen sind einer speicheroptimierten Datendateigruppe zugeordnet.All memory-optimized tables are mapped to a memory-optimized data-filegroup. Die Dateigruppe verwendet eine Syntax und Semantik ähnlich wie Filestream.This filegroup uses syntax and semantics similar to Filestream.

  • Es gibt keine Seiten und die Daten werden als Zeile dauerhaft gespeichert.There are no pages and the data is persisted as a row.

  • Alle Änderungen an speicheroptimierten Tabellen werden durch Anfügevorgänge an aktive Dateien gespeichert.All changes to memory-optimized tables are stored by appending to active files. Sowohl das Lesen als auch das Schreiben an Dateien ist sequenziell.Both reading and writing to files is sequential.

  • Eine Aktualisierung wird jedoch als Vorgang implementiert, der aus einer Löschung und einer Einfügung besteht.An update is implemented as a delete followed by an insert. Die gelöschten Zeilen werden nicht sofort aus dem Speicher entfernt.The deleted rows are not immediately removed from the storage. Die gelöschten Zeilen werden durch einen im Hintergrund ausgeführten Prozess namens MERGE entfernt; dies geschieht basierend auf einer Richtlinie wie in Dauerhaftigkeit für speicheroptimierte Tabellenbeschrieben.The deleted rows are removed by a background process, called MERGE, based on a policy as described in Durability for Memory-Optimized Tables.

  • Im Gegensatz zum Speicher für datenträgerbasierten Tabellen wird der Speicher für speicheroptimierte Tabellen nicht komprimiert.Unlike disk-based tables, storage for memory-optimized tables is not compressed. Beim Migrieren einer komprimierten (ZEILE oder SEITE), datenträgerbasierten Tabelle zu einer speicheroptimierten Tabelle müssen Sie die Größenänderungen berücksichtigen.When migrating a compressed (ROW or PAGE) disk-based table to memory-optimized table, you will need to account for the change in size.

  • Eine speicheroptimierte Tabelle kann sowohl dauerhaft als auch nicht dauerhaft sein.A memory-optimized table can be durable or can be non-durable. Sie müssen Speicher nur für dauerhafte speicheroptimierte Tabellen konfigurieren.You only need to configure storage for durable memory-optimized tables.

In diesem Abschnitt werden Prüfpunktdateipaare und weitere Aspekte der Speicherung von Daten in speicheroptimierten Tabellen beschrieben.This section describes checkpoint file pairs and other aspects of how data in memory-optimized tables is stored.

Themen in diesem Abschnitt:Topics in this section:

Weitere InformationenSee Also

In-Memory-OLTP (Arbeitsspeicheroptimierung)In-Memory OLTP (In-Memory Optimization)