In-Memory OLTP (Arbeitsspeicheroptimierung)

 

Veröffentlicht: November 2016

SQL Server 2014 wurde in In-Memory OLTP neu eingeführt und kann die Leistung der OLTP-Datenbank erheblich verbessern.In-Memory OLTP ist ein speicheroptimiertes Datenbankmodul, das in das SQL Server-Modul integriert und für OLTP optimiert wurde.

Azure Virtual MachineMöchten Sie SQL Server 2016 testen? Registrieren Sie sich für Microsoft Azure, und nehmen Sie anschließend Hier eine virtuelle Maschine mit bereits installiertem SQL Server 2016 in Betrieb. Sie können den virtuellen Computer löschen, wenn Sie fertig sind.

Zur Verwendung von In-Memory OLTP definieren Sie eine Tabelle, auf die viel zugegriffen wird, als speicheroptimiert. Speicheroptimierte Tabellen sind vollständig transaktionsfähig und dauerhaft, und der Zugriff erfolgt genau wie bei datenträgerbasierten Tabellen über Transact-SQL. Eine Abfrage kann sowohl auf speicheroptimierte Tabellen als auch auf datenträgerbasierte Tabellen verweisen. Eine Transaktion kann Daten in speicheroptimierten Tabellen und in datenträgerbasierten Tabellen aktualisieren. Gespeicherte Prozeduren, die nur auf speicheroptimierte Tabellen verweisen, können zur weiteren Leistungsverbesserung systemintern in Computercode kompiliert werden. Das In-Memory OLTP-Modul 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. Um dies zu erreichen, werden Datenstrukturen ohne Latches, jedoch mit Multiversionsverwaltung und optimistischer Nebenläufigkeitssteuerung verwendet. Das Ergebnis ist eine vorhersehbare niedrige Latenz unter einer Millisekunde sowie ein hoher Durchsatz mit linearer Skalierung für Datenbanktransaktionen. Der tatsächliche Leistungszuwachs hängt von vielen Faktoren ab, jedoch kann mit Leistungsverbesserungen um das 5- bis 20-fache gerechnet werden.

In der folgenden Tabelle sind die Arbeitsauslastungsmuster aufgeführt, die am meisten von In-Memory OLTP profitieren:

ImplementierungsszenarioImplementierungsszenarioVorteile von In-Memory OLTP
Hohe Dateneinfügungsrate durch mehrere gleichzeitige VerbindungenHauptsächlich Nur anhängen-Speicherung

Nicht in der Lage, mit der Einfügen-Arbeitslast Schritt zu halten
Konfliktbeseitigung

Reduzierung der Protokollierung
Leseleistung und Skalierung mit periodischen Batcheinfügungen und -updatesHochleistungs-Lesevorgänge, besonders wenn jede Serveranforderung mehrere Lesevorgänge ausführen muss

Skalierungsanforderungen können nicht erfüllt werden
Konfliktbeseitigung beim Eintreffen neuer Daten

Niedrigere Latenz bei Datenabruf

Minimierung der Codeausführungszeit
Intensive Geschäftslogikverarbeitung im DatenbankserverEinfügen, Aktualisieren und Löschen der Arbeitslast

Intensive Berechnungsvorgänge innerhalb von gespeicherten Prozeduren

Lese-/Schreibkonflikte
Konfliktbeseitigung

Minimierung der Codeausführungszeit für reduzierte Latenz und verbesserten Durchsatz
Niedrige LatenzErfordert Geschäftstransaktionen mit niedriger Latenz, die typische Datenbanklösungen nicht erzielen könnenKonfliktbeseitigung

Minimierung der Codeausführungszeit

Codeausführungszeit mit niedriger Latenz

Effizienter Datenabruf
SitzungsstatusverwaltungHäufige Einfügungen, Aktualisierungen und Punktsuchen

Hohe Skalierungslast durch zahlreiche statuslose Webserver
Konfliktbeseitigung

Effizienter Datenabruf

Optionale E/A-Reduzierung oder Eliminierung durch Verwendung von nicht dauerhaften Tabellen

Weitere Informationen zu Szenarien, in denen In-Memory OLTP für deutlichen Leistungszuwachs sorgt, finden Sie unter In-Memory OLTP – Allgemeine Arbeitsauslastungsmuster und Überlegungen zur Migration.

Durch In-Memory OLTP wird die Leistung vor allem bei OLTP-Transaktionen mit kurzer Ausführungsdauer verbessert.

Zu den Programmierschemata, die durch In-Memory OLTP optimiert werden, zählen Parallelitätsszenarien, Punktsuchen, Arbeitsauslastungen mit vielen Einfügungen und Updates sowie Geschäftslogik in gespeicherten Prozeduren.

Durch die Integration in SQL Server können Sie speicheroptimierte Tabellen und datenträgerbasierte Tabellen in derselben Datenbank verwenden und Abfragen über beide Tabellentypen ausführen.

In SQL Server 2014 gibt es Einschränkungen bei der Transact-SQL-Oberfläche, die für In-Memory OLTP unterstützt wird.

In-Memory OLTP erzielt signifikante Leistungs- und Skalierbarkeitsgewinne, indem Folgendes verwendet wird:

  • Algorithmen, die für den Zugriff auf arbeitsspeicherresidente Daten optimiert sind.

  • Optimistische Nebenläufigkeitssteuerung, die logische Sperren entfernt.

  • Sperren von freien Objekten, die alle physischen Sperren und Latches eliminieren. Threads, die Transaktionsaufgaben ausführen, verwenden keine Sperren oder Latches für die Parallelitätssteuerung.

  • Systemintern kompilierte gespeicherte Prozeduren, die beim Zugriff auf speicheroptimierte Tabellen deutlich bessere Leistung als interpretierte gespeicherte Prozeduren zeigen.

System_CAPS_ICON_important.jpg Wichtig


Um In-Memory OLTP verwenden zu können, sind einige Syntaxänderungen an den Tabellen und gespeicherten Prozeduren erforderlich. Weitere Informationen finden Sie unter Migrieren zu 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 OLTP profitieren.

In diesem Abschnitt finden Sie Informationen zu den folgenden Konzepten:

ThemaBeschreibung
Anforderungen für die Verwendung von speicheroptimierten TabellenErläutert Hardware- und Softwareanforderungen und Richtlinien zum Verwenden von speicheroptimierten Tabellen.
Verwenden von In-Memory OLTP in einer Umgebung mit virtuellen ComputernErläutert die Verwendung von In-Memory OLTP in einer virtualisierten Umgebung.
Codebeispiele für In-Memory OLTPEnthält Codebeispiele, die das Erstellen und Verwenden einer speicheroptimierten Tabelle veranschaulichen.
Speicheroptimierte TabellenBietet eine Einführung in speicheroptimierte Tabellen.
Speicheroptimierte TabellenvariablenEin Codebeispiel, das veranschaulicht, wie eine speicheroptimierte Tabellenvariable anstelle einer herkömmlichen Tabellenvariable verwendet wird, um die Verwendung von tempdb zu reduzieren.
Indizes für speicheroptimierte TabellenBietet eine Einführung in speicheroptimierte Indizes.
Systemintern kompilierte gespeicherte ProzedurenFührt systemintern kompilierte gespeicherte Prozeduren ein.
Verwalten des Arbeitsspeichers für In-Memory OLTPErläutert die Funktionsweise und Verwaltung der Speicherverwendung im System.
Erstellen und Verwalten von Speicher für speicheroptimierte ObjekteErläutert Daten- und Änderungsdateien, die Informationen zu Transaktionen in speicheroptimierten Tabellen speichern.
Sichern und Wiederherstellen speicheroptimierter TabellenErläutert die Sicherung und Wiederherstellung von speicheroptimierten Tabellen.
Transact-SQL-Unterstützung für In-Memory OLTPErläutert die Transact-SQL-Unterstützung für In-Memory OLTP.
Unterstützung für Hochverfügbarkeit für In-Memory OLTP-DatenbankenErläutert Verfügbarkeitsgruppen und Failoverclustering in In-Memory OLTP.
SQL Server-Unterstützung für In-Memory OLTPListet neue und aktualisierte Syntax und Funktionen auf, die speicheroptimierte Tabellen unterstützen.
Migrieren zu In-Memory OLTPErläutert, wie datenträgerbasierte Tabellen zu speicheroptimierten Tabellen migriert werden.

Weitere Informationen zu In-Memory OLTP finden Sie unter:

Datenbankfunktionen

Anzeigen: