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

SQL Server 2014 (12.x)SQL Server 2014 (12.x)wurde in In-Memory OLTPIn-Memory OLTP neu eingeführt und kann die Leistung der OLTP-Datenbank erheblich verbessern.New in SQL Server 2014 (12.x)SQL Server 2014 (12.x), In-Memory OLTPIn-Memory OLTP can significantly improve OLTP database application performance. In-Memory OLTPIn-Memory OLTP ist eine speicheroptimierte Datenbank-Engine, die in die SQL ServerSQL Server-Engine integriert und für OLTP optimiert wurde. In-Memory OLTPIn-Memory OLTP is a memory-optimized database engine integrated into the SQL ServerSQL Server engine, optimized for OLTP.

Azure VMAzure Virtual Machine Möchten Sie SQL Server 2016 testen?Do you want to try out SQL Server 2016? Registrieren Sie sich für Microsoft Azure, und nehmen Sie anschließend hier einen virtuellen Computer mit bereits installiertem SQL Server 2016 in Betrieb.Sign up for Microsoft Azure, and then go Here to spin up a Virtual Machine with SQL Server 2016 already installed. Sie können den virtuellen Computer löschen, wenn Sie fertig sind.You can delete the Virtual Machine when you’re finished.

Zur Verwendung von In-Memory OLTPIn-Memory OLTPdefinieren Sie eine Tabelle, auf die viel zugegriffen wird, als speicheroptimiert.To use In-Memory OLTPIn-Memory OLTP, you define a heavily accessed table as memory optimized. Speicheroptimierte Tabellen sind vollständig transaktionsfähig und dauerhaft, und der Zugriff erfolgt genau wie bei datenträgerbasierten Tabellen über Transact-SQLTransact-SQL .Memory-optimized-tables are fully transactional, durable, and are accessed using Transact-SQLTransact-SQL in the same way as disk-based tables. Eine Abfrage kann sowohl auf speicheroptimierte Tabellen als auch auf datenträgerbasierte Tabellen verweisen.A query can reference both memory-optimized tables and disk-based tables. Eine Transaktion kann Daten in speicheroptimierten Tabellen und in datenträgerbasierten Tabellen aktualisieren.A transaction can update data in memory-optimized tables and disk-based tables. Gespeicherte Prozeduren, die nur auf speicheroptimierte Tabellen verweisen, können zur weiteren Leistungsverbesserung systemintern in Computercode kompiliert werden.Stored procedures that only reference memory-optimized tables can be natively compiled into machine code for further performance improvements. Die In-Memory OLTPIn-Memory OLTP-Engine ist für außerordentlich hohe Sitzungsparallelität für Transaktionen vom OLTP-Typ konzipiert, die von einer hochgradigen Skalierung auf mittlerer Ebene gesteuert werden.The In-Memory OLTPIn-Memory OLTP engine is designed for extremely high session concurrency for OLTP type of transactions driven from a highly scaled-out middle-tier. Um dies zu erreichen, werden Datenstrukturen ohne Latches, jedoch mit Multiversionsverwaltung und optimistischer Nebenläufigkeitssteuerung verwendet.To achieve this, it uses latch-free data structures and optimistic, multi-version concurrency control. Das Ergebnis ist eine vorhersehbare niedrige Latenz unter einer Millisekunde sowie ein hoher Durchsatz mit linearer Skalierung für Datenbanktransaktionen.The result is predictable, sub-millisecond low latency and high throughput with linear scaling for database transactions. Der tatsächliche Leistungszuwachs hängt von vielen Faktoren ab, jedoch kann mit Leistungsverbesserungen um das 5- bis 20-fache gerechnet werden.The actual performance gain depends on many factors, but 5-to-20 times performance improvements are common.

In der folgenden Tabelle sind die Arbeitsauslastungsmuster aufgeführt, die am meisten von In-Memory OLTPIn-Memory OLTPprofitieren:The following table summarizes the workload patterns that may benefit most by using In-Memory OLTPIn-Memory OLTP:

ImplementierungsszenarioImplementation Scenario ImplementierungsszenarioImplementation Scenario Vorteile von In-Memory OLTPIn-Memory OLTPBenefits of In-Memory OLTPIn-Memory OLTP
Hohe Dateneinfügungsrate durch mehrere gleichzeitige VerbindungenHigh data insertion rate from multiple concurrent connections. Hauptsächlich Nur anhängen-SpeicherungPrimarily append-only store.

Nicht in der Lage, mit der Einfügen-Arbeitslast Schritt zu haltenUnable to keep up with the insert workload.
KonfliktbeseitigungEliminate contention.

Reduzierung der ProtokollierungReduce logging.
Leseleistung und Skalierung mit periodischen Batcheinfügungen und -updatesRead performance and scale with periodic batch inserts and updates. Hochleistungs-Lesevorgänge, besonders wenn jede Serveranforderung mehrere Lesevorgänge ausführen mussHigh performance read operations, especially when each server request has multiple read operations to perform.

Skalierungsanforderungen können nicht erfüllt werdenUnable to meet scale-up requirements.
Konfliktbeseitigung beim Eintreffen neuer DatenEliminate contention when new data arrives.

Niedrigere Latenz bei DatenabrufLower latency data retrieval.

Minimierung der CodeausführungszeitMinimize code execution time.
Intensive Geschäftslogikverarbeitung im DatenbankserverIntensive business logic processing in the database server. Einfügen, Aktualisieren und Löschen der ArbeitslastInsert, update, and delete workload.

Intensive Berechnungsvorgänge innerhalb von gespeicherten ProzedurenIntensive computation inside stored procedures.

Lese-/SchreibkonflikteRead and write contention.
KonfliktbeseitigungEliminate contention.

Minimierung der Codeausführungszeit für reduzierte Latenz und verbesserten DurchsatzMinimize code execution time for reduced latency and improved throughput.
Niedrige LatenzLow latency. Erfordert Geschäftstransaktionen mit niedriger Latenz, die typische Datenbanklösungen nicht erzielen könnenRequire low latency business transactions which typical database solutions cannot achieve. KonfliktbeseitigungEliminate contention.

Minimierung der CodeausführungszeitMinimize code execution time.

Codeausführungszeit mit niedriger LatenzLow latency code execution.

Effizienter DatenabrufEfficient data retrieval.
SitzungsstatusverwaltungSession state management. Häufige Einfügungen, Aktualisierungen und PunktsuchenFrequent insert, update and point lookups.

Hohe Skalierungslast durch zahlreiche statuslose WebserverHigh scale load from numerous stateless web servers.
KonfliktbeseitigungEliminate contention.

Effizienter DatenabrufEfficient data retrieval.

Optionale E/A-Reduzierung oder Eliminierung durch Verwendung von nicht dauerhaften TabellenOptional IO reduction or removal, when using non-durable tables

Weitere Informationen zu Szenarien, in denen In-Memory OLTPIn-Memory OLTP für deutlichen Leistungszuwachs sorgt, finden Sie unter In-Memory OLTP – Allgemeine Arbeitsauslastungsmuster und Überlegungen zur Migration.For more information about scenarios where In-Memory OLTPIn-Memory OLTP will result in the greatest performance gains, see In-Memory OLTP – Common Workload Patterns and Migration Considerations.

Durch In-Memory OLTPIn-Memory OLTP wird die Leistung vor allem bei OLTP-Transaktionen mit kurzer Ausführungsdauer verbessert. In-Memory OLTPIn-Memory OLTP will improve performance best in OLTP with short-running transactions.

Zu den Programmierschemata, die durch In-Memory OLTPIn-Memory OLTP optimiert werden, zählen Parallelitätsszenarien, Punktsuchen, Arbeitsauslastungen mit vielen Einfügungen und Updates sowie Geschäftslogik in gespeicherten Prozeduren.Programming patterns that In-Memory OLTPIn-Memory OLTP will improve include concurrency scenarios, point lookups, workloads where there are many inserts and updates, and business logic in stored procedures.

Durch die Integration in SQL ServerSQL Server können Sie speicheroptimierte Tabellen und datenträgerbasierte Tabellen in derselben Datenbank verwenden und Abfragen über beide Tabellentypen ausführen.Integration with SQL ServerSQL Server means you can have both memory-optimized tables and disk-based tables in the same database, and query across both types of tables.

In SQL Server 2014 (12.x)SQL Server 2014 (12.x) gibt es Einschränkungen bei der Transact-SQLTransact-SQL -Oberfläche, die für In-Memory OLTPIn-Memory OLTPunterstützt wird.In SQL Server 2014 (12.x)SQL Server 2014 (12.x) there are limitations in Transact-SQLTransact-SQL surface area supported for In-Memory OLTPIn-Memory OLTP.

In-Memory OLTPIn-Memory OLTP erzielt signifikante Leistungs- und skalierbarkeitsgewinne, indem: achieves significant performance and scalability gains by using:

  • Algorithmen, die für den Zugriff auf arbeitsspeicherresidente Daten optimiert sind.Algorithms that are optimized for accessing memory-resident data.

  • Optimistische Nebenläufigkeitssteuerung, die logische Sperren entfernt.Optimistic concurrency control that eliminates logical locks.

  • Sperren von freien Objekten, die alle physischen Sperren und Latches eliminieren.Lock free objects that eliminate all physical locks and latches. Threads, die Transaktionsaufgaben ausführen, verwenden keine Sperren oder Latches für die Parallelitätssteuerung.Threads that perform transactional work don’t use locks or latches for concurrency control.

  • Systemintern kompilierte gespeicherte Prozeduren, die beim Zugriff auf speicheroptimierte Tabellen deutlich bessere Leistung als interpretierte gespeicherte Prozeduren zeigen.Natively compiled stored procedures, which have significantly better performance than interpreted stored procedures, when accessing a memory-optimized table.

Wichtig

Um In-Memory OLTPIn-Memory OLTPverwenden zu können, sind einige Syntaxänderungen an den Tabellen und gespeicherten Prozeduren erforderlich.Some syntax changes to tables and stored procedures will be required to use In-Memory OLTPIn-Memory OLTP. Weitere Informationen finden Sie unter Migrieren zu In-Memory OLTP.For more information, see Migrating to In-Memory OLTP. Bevor Sie versuchen, eine datenträgerbasierte Tabelle zu einer speicheroptimierten Tabelle zu migrieren, informieren Sie sich unter Bestimmen, ob eine Tabelle oder eine gespeicherte Prozedur zu In-Memory OLTP portiert werden soll darüber, welche Tabellen und gespeicherten Prozeduren von In-Memory OLTPIn-Memory OLTP profitieren.Before you attempt to migrate a disk-based table to a memory-optimized table, read Determining if a Table or Stored Procedure Should Be Ported to In-Memory OLTP to see which tables and stored procedures will benefit from In-Memory OLTPIn-Memory OLTP.

In diesem AbschnittIn this section

In diesem Abschnitt finden Sie Informationen zu den folgenden Konzepten:This section provides information about the following concepts:

ThemaTopic DescriptionDescription
Anforderungen für die Verwendung speicheroptimierter TabellenRequirements for Using Memory-Optimized Tables Erläutert Hardware- und Softwareanforderungen und Richtlinien zum Verwenden von speicheroptimierten Tabellen.Discusses hardware and software requirements and guidelines for using memory-optimized tables.
Verwenden von In-Memory-OLTP in einer VM-UmgebungUsing In-Memory OLTP in a VM Environment Erläutert die Verwendung von In-Memory OLTPIn-Memory OLTP in einer virtualisierten Umgebung.Covers using In-Memory OLTPIn-Memory OLTP in a virtualized environment.
Codebeispiele für In-Memory OLTPIn-Memory OLTP Code Samples Enthält Codebeispiele, die das Erstellen und Verwenden einer speicheroptimierten Tabelle veranschaulichen.Contains code samples that show how to create and use a memory-optimized table.
Memory-Optimized TablesMemory-Optimized Tables Bietet eine Einführung in speicheroptimierte Tabellen.Introduces memory-optimized tables.
Speicheroptimierte TabellenvariablenMemory-Optimized Table Variables Ein Codebeispiel, das veranschaulicht, wie eine speicheroptimierte Tabellenvariable anstelle einer herkömmlichen Tabellenvariable verwendet wird, um die Verwendung von tempdb zu reduzieren.Code example showing how to use a memory-optimized table variable instead of a traditional table variable to reduce tempdb use.
Indizes für speicheroptimierte TabellenIndexes on Memory-Optimized Tables Bietet eine Einführung in speicheroptimierte Indizes.Introduces memory-optimized indexes.
Nativ kompilierte gespeicherte ProzedurenNatively Compiled Stored Procedures Führt systemintern kompilierte gespeicherte Prozeduren ein.Introduces natively compiled stored procedures.
Verwalten des Arbeitsspeichers für In-Memory-OLTPManaging Memory for In-Memory OLTP Erläutert die Funktionsweise und Verwaltung der Speicherverwendung im System.Understanding and managing memory usage on your system.
Erstellen und Verwalten von Speicher für speicheroptimierte ObjekteCreating and Managing Storage for Memory-Optimized Objects Erläutert Daten- und Änderungsdateien, die Informationen zu Transaktionen in speicheroptimierten Tabellen speichern.Discusses data and delta files, which store information about transactions in memory-optimized tables.
Sichern und Wiederherstellen speicheroptimierter TabellenBackup, Restore, and Recovery of Memory-Optimized Tables Erläutert die Sicherung und Wiederherstellung von speicheroptimierten Tabellen.Discusses backup, restore, and recovery for memory-optimized tables.
Transact-SQL-Unterstützung für In-Memory-OLTPTransact-SQL Support for In-Memory OLTP Erläutert die Transact-SQLTransact-SQL -Unterstützung für In-Memory OLTPIn-Memory OLTP.Discusses Transact-SQLTransact-SQL support for In-Memory OLTPIn-Memory OLTP.
Unterstützung für Hochverfügbarkeit für In-Memory-OLTP-DatenbankenHigh Availability Support for In-Memory OLTP databases Erläutert Verfügbarkeitsgruppen und Failoverclustering in In-Memory OLTPIn-Memory OLTP.Discusses availability groups and failover clustering in In-Memory OLTPIn-Memory OLTP.
SQL Server-Unterstützung für In-Memory OLTPSQL Server Support for In-Memory OLTP Listet neue und aktualisierte Syntax und Funktionen auf, die speicheroptimierte Tabellen unterstützen.Lists new and updated syntax and features supporting memory-optimized tables.
Migrieren zu In-Memory-OLTPMigrating to In-Memory OLTP Erläutert, wie datenträgerbasierte Tabellen zu speicheroptimierten Tabellen migriert werden.Discusses how to migrate disk-based tables to memory-optimized tables.

Weitere Informationen zu In-Memory OLTPIn-Memory OLTP finden Sie unter:More information about In-Memory OLTPIn-Memory OLTP is available on:

Siehe auchSee Also

DatenbankfunktionenDatabase Features