Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 1141|Antwort: 1

[Quelle] Speicheroptimierte Tabellen für SQL-SERVER-Datenbanken

[Link kopieren]
Veröffentlicht am 10.05.2025, 21:28:18 | | | |
Einführung in speicheroptimierte Tabellen

Speicheroptimierte Tabellen sind Tabellen, die mit CREATE TABLE (Transact-SQL) erstellt werden.

Standardmäßig sind speicheroptimierte Tabellen vollständig persistent. Wie Transaktionen auf (traditionellen) festplattenbasierten Tabellen sind Transaktionen auf speicheroptimierten Tabellen vollständig atomar, konsistent, isoliert und persistent (ACID). Speicheroptimierte Tabellen und nativ kompilierte gespeicherte Prozeduren unterstützen nur eine Teilmenge der Transact-SQL-Funktionen.

Ab SQL Server 2016 und in Azure SQL Database gibt es keine Einschränkungen mehr für OLTP-spezifische Zusammenstellung oder Codepages im Speicher.

Der primäre Speicher einer speicheroptimierten Tabelle ist der primäre Speicher. Lesen Sie Zeilen aus der Tabelle aus dem Gedächtnis und schreiben Sie diese Zeilen ins Gedächtnis. Eine weitere Kopie der Tabellendaten wird auf der Festplatte geführt, jedoch nur zu Persistenzzwecken. Weitere Informationen zu persistenten Tabellen finden Sie unter Erstellen und verwalten der Speicherung von Objekten zur Speicheroptimierung. Daten in speicheroptimierten Tabellen werden nur während der Datenbankwiederherstellung von der Festplatte gelesen (zum Beispiel nach einem Server-Neustart).

Für größere Leistungssteigerungen unterstützt In-Memory-OLTP persistente Tabellen mit transaktionaler persistenter Latenz. Verzögerte persistente Transaktionen werden kurz nach dem Transaktionsabschluss auf der Festplatte gespeichert und die Kontrolle an den Client zurückgegeben. Im Gegenzug für verbesserte Leistung gehen committierte Transaktionen, die nicht auf der Festplatte gespeichert werden, im Falle eines Serverabsturzes oder eines Failovers verloren.

Zusätzlich zu den standardmäßigen, persistenten speicheroptimierten Tabellen unterstützt SQL Server nicht gespeicherte, nicht persistente speicheroptimierte Tabellen, deren Daten nicht auf der Festplatte gespeichert werden. Das bedeutet, dass Transaktionen in diesen Tabellen keine Festplatten-IO erfordern, aber bei Serverfehlern oder Failover gehen die Daten verloren.

In-memory OLTP integriert sich mit SQL Server, um ein nahtloses Erlebnis in allen Bereichen wie Entwicklung, Bereitstellung, Verwaltung und Support zu bieten. Eine Datenbank kann sowohl In-Memory-Objekte als auch Festplattenobjekte enthalten.

Die Zeilen in der speicheroptimierten Tabelle sind versionsgeneriert. Das bedeutet, dass jede Zeile in der Tabelle mehrere Versionen haben kann. Alle Zeilenversionen werden in derselben Tabellen-Datenstruktur verwaltet. Zeilenversionierung wird verwendet, um gleichzeitige Lese- und Schreibvorgänge derselben Zeile zu ermöglichen. Weitere Informationen zu gleichzeitigen Lese- und Schreibvorgängen in derselben Zeile finden Sie unter Dinge in der Speicheroptimierungstabelle.

Ungefähre Schritte und Nutzungsbeschränkungen

Schritte:

(1) Eine Datenbank und MEMORY_OPTIMIZED_DATA Dateigruppe erstellen (Datenbank hinzufügen, jede Datenbank kann nur eine MEMORY_OPTIMIZED_DATA Dateigruppe haben!!) )
(2) Fügen Sie der Dateigruppe einen Ordner hinzu, um die Datendateien zu speichern (bitte erstellen Sie diesen Ordner nicht im Voraus, sondern verwenden Sie alter Datenbank Datei() hinzufügen zur Dateigruppe)
(3) Erstelle persistente/nicht-persistente, speicheroptimierte Tabellen (SQL Server 2014 wird standardmäßig gespeichert), und du musst außerdem einen Primärschlüssel auf Basis eines nicht-aggregierten Hash-Index definieren. Hashed Indexes sind der einzige unterstützte Indextyp in speicheroptimierten Tabellen.
(4) Verwendung lokal kompilierter gespeicherter Prozeduren: Speicheroptimierte Tabellen unterstützen lokal kompilierte gespeicherte Prozeduren, solange diese nur speicheroptimierte Tabellen referenzieren.

Grenze:

(1) Die speicheroptimierte Tabelle muss unter die Datenbank mit der Dateigruppe CONTAINS MEMORY_OPTIMIZED_DATA gelegt werden.
(2) Die speicheroptimierte Tabelle muss einen Primärschlüssel auf Basis eines nicht-aggregierten Hash-Index definieren, und die Tabelle muss definiert werdenFremdschlüssel- oder Constraint-Prüfung wird nicht unterstützt
(3) Die Speicheroptimierungstabelle muss genügend Speicher haben, sonst schlagen Operationen wie das Einfügen von Updates fehl.
(4) SQL Server 2014 hat viele Einschränkungen bei diesen Tabellen. Zum Beispiel unterstützen sie keine Fremdschlüssel oder Constraint Checking (was sich ähnlich wie MySQLS Speicher-Engine anfühlt), sieIDENTITY-Felder oder DML-Trigger werden ebenfalls nicht unterstützt

Nutze das Tutorial

Die Datenbankversionen sind wie folgt:

Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64)
        25. Sep 2024 17:34:41
        Copyright (C) 2022 Microsoft Corporation
        Enterprise Edition: Kernbasierte Lizenzierung (64-Bit) unter Linux (Ubuntu 22.04.4 LTS) <X64>

Zuerst erstellen Sie eine Datenbank und eine Dateigruppe mit folgendem Befehl:

Wenn Sie keine speicheroptimierte Gruppe erstellen, wird ein Fehler gemeldet, wenn Sie eine speicheroptimierte Tabelle erstellen:Speicheroptimierte Tabellen können nicht erstellt werden. Um speicheroptimierte Tabellen zu erstellen, muss die Datenbank ein MEMORY_OPTIMIZED_FILEGROUP haben, das online ist und mindestens einen Container enthält.

Erstellen Sie zwei speicheroptimierte Tabellen zum Testen, eine persistent und eine nicht-persistent, mit folgendem Befehl:

Die Speicheroptimierungstabelle hat zwei Optionen (DURABILITY = SCHEMA_AND_DATA), (DURABILITY = SCHEMA_ONLY)
Haltbarkeitstabelle: HALTBARKEIT =SCHEMA_AND_DATA
Nicht-persistente Tabelle: HALTBARKEIT =SCHEMA_ONLY

Tests werden separat in die Speicheroptimierungstabelle eingefügt100.000 Artikel(tatsächlich 100002 Items) Daten, lautet der Befehl wie folgt:





Persistenz dauert 28 Sekunden zum Einschalten und 1 Sekunde ohne Persistenz

Referenz:

Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.




Vorhergehend:Ich liebe es, Qualitätsinspektionssoftware für Laptops zu recyceln
Nächster:Die C# 8.0-Syntax verwendet Index und Bereich
 Vermieter| Veröffentlicht am 10.05.2025, 21:36:40 |
Eine normale Tabelle fügt 100.000 Datenstücke ein und benötigt 18 Sekunden zur Ausführung. Wie unten gezeigt:



Skript:
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com