Freigeben über


In-Memory OLTP (In-Memory Optimierung)

Neu in SQL Server 2014 (12.x) In-Memory OLTP kann die Leistung der OLTP-Datenbankanwendung erheblich verbessern. In-Memory OLTP ist ein speicheroptimiertes Datenbankmodul, das in das SQL Server-Modul integriert ist, das für OLTP optimiert ist.

Azure Virtual Machine Möchten Sie SQL Server 2016 testen? Registrieren Sie sich für Microsoft Azure und gehen Sie dann hier, um eine virtuelle Maschine mit bereits installiertem SQL Server 2016 einzurichten. Sie können den virtuellen Computer löschen, wenn Sie fertig sind.

Um In-Memory OLTP zu verwenden, definieren Sie eine stark zugreifende Tabelle als speicheroptimiert. Speicheroptimierte Tabellen sind vollständig transaktional, dauerhaft und werden mit Transact-SQL auf die gleiche Weise wie datenträgerbasierte Tabellen zugegriffen. Eine Abfrage kann sowohl auf speicheroptimierte Tabellen als auch auf datenträgerbasierte Tabellen verweisen. Eine Transaktion kann Daten in speicheroptimierten Tabellen und datenträgerbasierten Tabellen aktualisieren. Gespeicherte Prozeduren, die nur auf speicheroptimierte Tabellen verweisen, können nativ in Computercode kompiliert werden, um weitere Leistungsverbesserungen zu erzielen. Der In-Memory OLTP-Engine ist für extrem hohe Sitzungskonkurrenz bei OLTP-Transaktionen ausgelegt, die von einer stark skalierten mittleren Schicht gesteuert werden. Um dies zu erreichen, verwendet es latch-freie Datenstrukturen und optimistische mehrstufige Parallelitätssteuerung. Das Ergebnis ist vorhersehbar, unter Millisekunden niedrige Latenz und hoher Durchsatz mit linearer Skalierung für Datenbanktransaktionen. Der tatsächliche Leistungsgewinn hängt von vielen Faktoren ab, aber 5 bis 20 Mal sind Leistungsverbesserungen üblich.

In der folgenden Tabelle sind die Arbeitsauslastungsmuster zusammengefasst, die am meisten von In-Memory OLTP profitieren können:

Implementierungsszenario Implementierungsszenario Vorteile von In-Memory OLTP
Hohe Rate der Dateneinfügung bei mehreren gleichzeitig aktiven Verbindungen. Primär Anfügespeicher.

Das Arbeitspensum beim Einfügen kann nicht beibehalten werden.
Beseitigen Sie den Konflikt.

Reduzieren Sie die Logging-Aktivitäten.
Leistungslesen und Skalierung durch regelmäßige Batch-Einfügungen und -Aktualisierungen. Hochleistungslesevorgänge, insbesondere, wenn jede Serveranforderung über mehrere Lesevorgänge verfügt.

Die Skalierungsanforderungen können nicht erfüllt werden.
Vermeiden Sie die Bestreitung, wenn neue Daten eintreffen.

Schnellere Datenabfrage mit niedriger Latenz.

Minimieren Sie die Codeausführungszeit.
Intensive Geschäftslogikverarbeitung auf dem Datenbankserver. Arbeitsauslastung einfügen, aktualisieren und löschen.

Intensive Berechnung innerhalb gespeicherter Prozeduren.

Lese- und Schreibkonkurrenz.
Beseitigen Sie die Kontroverse.

Minimieren Sie die Codeausführungszeit für eine reduzierte Latenz und einen verbesserten Durchsatz.
Geringe Latenz. Erfordern Sie Geschäftstransaktionen mit geringer Latenz, die typische Datenbanklösungen nicht erreichen können. Beseitigen Sie den Konflikt.

Minimieren Sie die Codeausführungszeit.

Codeausführung mit geringer Latenz.

Effizienter Datenabruf.
Sitzungsstatusverwaltung. Häufige Einfüge-, Aktualisierungs- und Punkt-Nachschlagevorgänge.

Hohe Auslastung von zahlreichen zustandslosen Webservern.
Beseitigen Sie die Streitigkeiten.

Effizienter Datenabruf.

Optionale E/A-Reduzierung oder Entfernung bei Verwendung nicht dauerhafter Tabellen

Weitere Informationen zu Szenarien, in denen In-Memory OLTP zu den größten Leistungsgewinnen führt, finden Sie unter In-Memory OLTP – Allgemeine Arbeitsauslastungsmuster und Migrationsüberlegungen.

In-Memory OLTP wird die Performance bei OLTP mit Transaktionen, die nur kurz laufen, am besten verbessern.

Programmiermuster, die In-Memory OLTP verbessern, umfassen Parallelitätsszenarien, Punktsuche, Workloads, bei denen viele Einfügungen und Updates vorhanden sind, sowie Geschäftslogik in gespeicherten Prozeduren.

Die Integration mit SQL Server bedeutet, dass Sie sowohl speicheroptimierte Tabellen als auch datenträgerbasierte Tabellen in derselben Datenbank haben können, und abfragen sie in beiden Tabellentypen.

In SQL Server 2014 (12.x) gibt es Einschränkungen in Transact-SQL Oberflächenfläche, die für In-Memory OLTP unterstützt werden.

In-Memory OLTP erzielt erhebliche Leistungs- und Skalierbarkeitsgewinne durch:

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

  • Optimistisches Parallelitätssteuerelement, das logische Sperren beseitigt.

  • Schlossfreie Objekte, die alle physischen Schlösser und Verriegelungen entfernen. Threads, die transaktionale Arbeit ausführen, verwenden keine Sperren oder Verriegelungen für die Parallelitätssteuerung.

  • Nativ kompilierte gespeicherte Prozeduren, die beim Zugriff auf eine speicheroptimierte Tabelle wesentlich bessere Leistung als interpretierte gespeicherte Prozeduren aufweisen.

Von Bedeutung

Einige Syntaxänderungen an Tabellen und gespeicherten Prozeduren sind erforderlich, um In-Memory OLTP zu verwenden. Weitere Informationen finden Sie unter Migrieren zu In-Memory OLTP. Bevor Sie versuchen, eine datenträgerbasierte Tabelle zu einer speicheroptimierten Tabelle zu migrieren, lesen Sie "Bestimmen, ob eine Tabelle oder gespeicherte Prozedur zu In-Memory OLTP portiert werden soll , um festzustellen, welche Tabellen und gespeicherten Prozeduren von In-Memory OLTP profitieren.

In diesem Abschnitt

Dieser Abschnitt enthält Informationen zu den folgenden Konzepten:

Thema BESCHREIBUNG
Anforderungen für die Verwendung von Memory-Optimized Tabellen Erläutert Hardware- und Softwareanforderungen und Richtlinien für die Verwendung von speicheroptimierten Tabellen.
Verwenden von In-Memory OLTP in einer VM-Umgebung Deckt die Verwendung von In-Memory OLTP in einer virtualisierten Umgebung ab.
In-Memory OLTP-Codebeispiele Enthält Codebeispiele, die zeigen, wie eine speicheroptimierte Tabelle erstellt und verwendet wird.
Memory-Optimized Tabellen Führt speicheroptimierte Tabellen ein.
Memory-Optimized Tabellenvariablen Codebeispiel, das zeigt, wie eine speicheroptimierte Tabellenvariable anstelle einer herkömmlichen Tabellenvariable verwendet wird, um die Verwendung von tempdb zu reduzieren.
Indizes für Memory-Optimized Tabellen Führt speicheroptimierte Indizes ein.
Nativ kompilierte gespeicherte Prozeduren Führt systemeigene kompilierte gespeicherte Prozeduren ein.
Verwalten des Speichers für In-Memory OLTP Verstehen und Verwalten der Speicherauslastung auf Ihrem System.
Erstellen und Verwalten von Speicher für Memory-Optimized Objekte Erläutert Daten- und Deltadateien, die Informationen zu Transaktionen in speicheroptimierten Tabellen speichern.
Sicherung, Wiederherstellung und Datenwiederherstellung von Memory-Optimized Tabellen Erläutert Sicherung, Wiederherstellung und Datenwiederherstellung für speicheroptimierte Tabellen.
Transact-SQL Unterstützung für In-Memory OLTP Erläutert Transact-SQL Unterstützung für In-Memory OLTP.
Unterstützung für hohe Verfügbarkeit für In-Memory OLTP-Datenbanken Erläutert Verfügbarkeitsgruppen und Failoverclustering in In-Memory OLTP.
SQL Server-Unterstützung für In-Memory OLTP Listet neue und aktualisierte Syntax und Features auf, die speicheroptimierte Tabellen unterstützen.
Migrieren zu In-Memory OLTP Erläutert, wie Datenträgerbasierte Tabellen in speicheroptimierte Tabellen migriert werden.

Weitere Informationen zu In-Memory OLTP finden Sie unter:

Siehe auch

Datenbankfunktionen