Aktivieren der Komprimierung für eine Tabelle oder einen Index

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

In diesem Artikel wird beschrieben, wie Sie die Datenkomprimierung für eine vorhandene Tabelle oder einen Index in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL aktivieren. Informationen zum Aktivieren der Datenkomprimierung beim Erstellen einer Tabelle oder eines Index finden Sie in den Beispielen zum Erstellen eines komprimierten Index und zum Erstellen einer Tabelle mit Zeilenkomprimierung.

Beschränkungen und Einschränkungen

  • Für Systemtabellen ist die Komprimierung nicht verfügbar.

  • Wenn es sich bei der Tabelle um einen Heap handelt, wird der Neuerstellungsvorgang für ONLINE den Modus mit einem einzelnen Thread ausgeführt. Verwenden Sie OFFLINE den Modus für einen Multithread-Heap-Neuerstellungsvorgang. Neuerstellungsvorgänge sind OFFLINE nur dann möglich, wenn Sie die ONLINE Option angeben. Vollständige Informationen zum Ausführen einer ONLINE Neuerstellung finden Sie unter Perform Index Operations Online.

  • Sie können die Komprimierungseinstellung einer einzelnen Partition nicht ändern, wenn die Tabelle nicht ausgerichtete Indizes aufweist.

  • Mehrere Datentypen sind von der Datenkomprimierung nicht betroffen. Weitere Informationen finden Sie unter Auswirkungen der Zeilenkomprimierung auf den Speicher.

Berechtigungen

Dies erfordert die Berechtigung ALTER für die Tabelle oder den Index.

Verwenden Sie SQL Server Management Studio

  1. Erweitern Sie im Objekt-Explorer die Datenbank mit der Tabelle, die Sie komprimieren möchten, und erweitern Sie dann den Ordner Tabellen .

  2. Um einen Index zu komprimieren, erweitern Sie die Tabelle mit dem Index, den Sie komprimieren möchten, und erweitern Sie dann den Ordner Indizes .

  3. Klicken Sie mit der rechten Maustaste auf die Tabelle oder den Index, die bzw. den Sie komprimieren möchten, zeigen Sie auf Speicher, und wählen Sie dann Komprimierung verwalten… aus.

  4. Klicken Sie auf der Seite Willkommen des Datenkomprimierungs-Assistenten auf Weiter.

  5. Wählen Sie auf der Seite Komprimierungstyp auswählen für Komprimierungstyp aus, der auf alle Partitionen der Tabelle oder des Index angewendet werden soll, die Sie komprimieren möchten. Wählen Sie anschließend Weiter aus.

    Die folgenden Optionen sind auf der Seite Komprimierungstyp auswählen verfügbar:

    • Gleichen Komprimierungstyp für alle Partitionen verwenden (Kontrollkästchen)

      Wählen Sie diese Option aus, um für alle Partitionen die gleiche Komprimierungseinstellung zu konfigurieren. Damit werden das Auswahlfeld aktiviert und die Spalte Komprimierungstyp im Raster deaktiviert. Wenn das Kontrollkästchen aktiviert ist, enthält die nebenstehende Liste die Optionen Keiner, Zeileund Seite.

    • Partitionsnummer

      Listet jede Partition in der Tabelle bzw. im Index auf. Diese Spalte ist schreibgeschützt.

    • Komprimierungstyp

      Wählen Sie die Komprimierungsoption für jede Partition aus. Ist nicht verfügbar, wenn derselbe Komprimierungstyp für alle Partitionen ausgewählt ist. Listenoptionen sind Keiner, Zeileund Seite.

    • Grenze

      Zeigt die Partitionsbegrenzung an. Diese Spalte ist schreibgeschützt.

    • Zeilenanzahl

      Zeigt die Anzahl von Zeilen in dieser Partition an. Diese Spalte ist schreibgeschützt.

    • Aktueller Speicherplatz

      Zeigt den aktuell von dieser Partition belegten Speicherplatz in Megabytes (MB) an. Diese Spalte ist schreibgeschützt.

    • Angeforderter komprimierter Speicherplatz

      Nachdem Sie auf Berechnen geklickt haben, wird in dieser Spalte die geschätzte Größe der einzelnen Partitionen nach der Komprimierung angezeigt. Dabei wird die in der Spalte Komprimierungstyp angegebene Einstellung zugrunde gelegt. Diese Spalte ist schreibgeschützt.

    • Berechnen

      Klicken Sie auf diese Option, um die Größe der einzelnen Partitionen nach der Komprimierung auf Grundlage der in der Spalte Komprimierungstyp angegebenen Einstellung zu schätzen.

  6. Geben Sie auf der Seite Ausgabeoption auswählen an, wie Sie die Komprimierung fertig stellen möchten. Wählen Sie Skript erstellen aus, um ein auf den vorherigen Seiten im Assistenten basierendes SQL-Skript zu erstellen. Wählen Sie Sofort ausführen aus, um die neue partitionierte Tabelle zu erstellen, nachdem Sie alle verbleibenden Seiten im Assistenten vervollständigt haben. Wählen Sie Zeitplan aus, um die neue partitionierte Tabelle zu einer vorher bestimmten Zeit für die Zukunft zu erstellen.

    Wenn Sie Skript erstellenauswählen, sind die folgenden Optionen unter Skriptoptionenverfügbar:

    • Skript in Datei schreiben
      Generiert das Skript als .sql Datei. Geben Sie in das Dialogfeld Dateiname einen Dateinamen und einen Speicherort ein, oder klicken Sie auf Durchsuchen, um das Dialogfeld Speicherort der Skriptdatei zu öffnen. Wählen Sie in Speichern unterUnicode-Text oder ANSI-Textaus.

    • Skript in Zwischenablage schreiben
      Speichert das Skript in der Zwischenablage.

    • Skript in Fenster "Neue Abfrage" schreiben
      Generiert das Skript in einem neuen Abfrage-Editor-Fenster. Dies ist die Standardauswahl.

    • Wenn Sie Zeitplan auswählen, klicken Sie auf Zeitplan ändern.

    1. Geben Sie im Dialogfeld Neuer Auftragszeitplan im Feld Name den Namen des Auftragszeitplans ein.

    2. Wählen Sie in der Liste Zeitplantyp den Zeitplantyp aus:

      • Automatisch starten, wenn der SQL Server-Agent startet

      • Starten, wenn sich die CPUs im Leerlauf befinden

      • Wiederholt. Aktivieren Sie diese Option, wenn Ihre neu partitionierte Tabelle regelmäßig mit neuen Informationen aktualisiert wird.

      • Einmalige Ausführung. Hierbei handelt es sich um die Standardoption.

    3. Aktivieren oder deaktivieren Sie das Kontrollkästchen Aktiviert , um den Zeitplan zu aktivieren oder zu deaktivieren.

    4. Wenn Sie Wiederholtauswählen:

      1. Geben Sie unter Häufigkeitin der Liste Tritt auf die Häufigkeit des Vorkommens an:

        • Wenn Sie im Dialogfeld Wiederholen alledie Option Täglich auswählen, geben Sie ein, wie oft der Auftragszeitplan wiederholt wird (in Tagen).

        • Wenn Sie im Dialogfeld Wiederholen alledie Option Wöchentlich auswählen, geben Sie ein, wie oft der Auftragszeitplan wiederholt wird (in Wochen). Wählen Sie den Tag oder die Tage der Woche aus, an denen der Auftragszeitplan ausgeführt wird.

        • Wenn Sie Monatlichauswählen, wählen Sie Tag oder Amaus.

          • Wenn Sie Tagauswählen, geben Sie das Datum ein, an dem der Auftragszeitplan ausgeführt wird, und wie oft der Auftragszeitplan wiederholt werden soll (in Monaten). Wenn Sie beispielsweise möchten, dass der Auftragszeitplan jeden zweiten Monat am 15. ausgeführt wird, wählen Sie Tag aus, und geben Sie in das erste Feld „15“ und in das zweite Feld „2“ ein. Die größte im zweiten Feld zulässige Zahl ist "99".

          • Wenn Sie Amauswählen, geben Sie den spezifischen Tag der Woche im Monat an, an dem der Auftragszeitplan ausgeführt wird, und wie oft der Auftragszeitplan wiederholt werden soll (in Monaten). Wenn Sie beispielsweise möchten, dass der Auftragszeitplan jeden zweiten Monat am letzten Wochentag ausgeführt werden soll, wählen Sie Tag und in der ersten Liste Letzter und in der zweiten Liste Wochentag aus, und geben Sie in das letzte Feld „2“ ein. Sie können auch ersten, zweiten, drittenoder viertensowie bestimmte Wochentage z. B. Sonntag oder Mittwoch) aus den ersten beiden Listen auswählen. Die größte im letzten Feld zulässige Zahl ist "99".

      2. Geben Sie unter Häufigkeit pro Tagan, wie oft der Auftragszeitplan an dem Tag wiederholt werden soll, an dem der Auftragszeitplan ausgeführt wird:

        • Wenn Sie Einmalig umauswählen, geben Sie im Feld Einmalig um die spezifische Tageszeit ein, zu der der Auftragszeitplan ausgeführt werden soll. Geben Sie die Stunde, Minute und Sekunde des Tages sowie AM oder PM ein.

        • Wenn Sie Alleauswählen, geben Sie an, wie oft der Auftragszeitplan an dem unter Häufigkeitausgewählten Tag ausgeführt werden soll. Wenn Sie z.B. möchten, dass der Auftragszeitplan am Tag seiner Ausführung alle 2 Stunden wiederholt wird, wählen Sie Alle aus, geben in das erste Feld „2“ ein und wählen dann in der Liste Stunde(n) aus. Aus dieser Liste können Sie auch Minute(n) und Sekunde(n) auswählen. Die größte im ersten Feld zulässige Zahl ist "100".

          Geben Sie im Feld Start die Zeit ein, zu der die Ausführung des Auftragszeitplans beginnen soll. Geben Sie im Feld Ende die Zeit ein, zu der die Ausführung des Auftragszeitplans enden soll. Geben Sie die Stunde, Minute und Sekunde des Tages sowie AM oder PM ein.

      3. Geben Sie unter Dauerin Startdatumdas Datum ein, an dem die Ausführung des Auftragszeitplans beginnen soll. Wählen Sie Enddatum oder Kein Enddatum aus, um anzugeben, wann die Ausführung des Auftragszeitplans beendet werden soll. Wenn Sie Enddatumauswählen, geben Sie das Datum ein, an dem die Ausführung des Auftragszeitplans beendet werden soll.

    5. Wenn Sie Einmalauswählen, geben Sie unter Einmaligin das Feld Datum das Datum ein, an dem der Auftragszeitplan ausgeführt werden soll. Geben Sie im Feld Uhrzeit die Zeit ein, zu der der Auftragszeitplan ausgeführt werden soll. Geben Sie die Stunde, Minute und Sekunde des Tages sowie AM oder PM ein.

    6. Überprüfen Sie unter Zusammenfassungim Feld Beschreibung, ob alle Auftragszeitplaneinstellungen richtig sind.

    7. Klicken Sie auf OK.

    Klicken Sie auf Weiter, nachdem Sie diese Seite ausgefüllt haben.

  7. Erweitern Sie auf der Seite Zusammenfassung der Überprüfung unter Überprüfen Sie Ihre Auswahlalle verfügbaren Optionen, um zu überprüfen, ob alle Komprimierungseinstellungen richtig sind. Klicken Sie auf Fertig stellen, wenn alle Einstellungen richtig sind.

  8. Auf der Seite Status des Komprimierungsassistenten können Sie Statusinformationen zu den Aktionen des Assistenten zum Erstellen von Partitionen überwachen. Je nach den im Assistenten ausgewählten Optionen enthält diese Seite eine oder mehrere Aktionen. Im oberen Feld werden der Gesamtstatus des Assistenten und die Anzahl der empfangenen Status-, Fehler- und Warnmeldungen angezeigt.

    Die folgenden Optionen sind auf der Seite Status des Komprimierungsassistenten verfügbar:

    • Details

      Stellt für jede vom Assistenten ausgeführte Aktion Informationen zur Aktion, zum Status und zu den zurückgegebenen Meldungen bereit.

    • Aktion

      Gibt den Typ und den Namen jeder Aktion an.

    • Status

      Gibt an, ob für die Aktion des Assistenten insgesamt der Wert Erfolg oder der Wert Fehlerzurückgegeben wurde.

    • Meldung

      Stellt alle vom Prozess zurückgegebenen Fehler- oder Warnmeldungen bereit.

    • Report

      Erstellt einen Bericht mit den Ergebnissen des Assistenten zum Erstellen von Partitionen. Die Optionen sind Bericht anzeigen, Bericht in Datei speichern, Bericht in Zwischenablage kopierenund Bericht als E-Mail senden.

    • Bericht anzeigen

      Öffnet das Dialogfeld Bericht anzeigen , das einen Textbericht zum Fortschritt des Assistenten zum Erstellen von Partitionen enthält.

    • Bericht in Datei speichern

      Öffnet das Dialogfeld Bericht speichern unter .

    • Bericht in Zwischenablage kopieren

      Kopiert die Ergebnisse aus dem Statusbericht des Assistenten in die Zwischenablage.

    • Bericht als E-Mail senden

      Kopiert die Ergebnisse aus dem Statusbericht des Assistenten in eine E-Mail.

    Klicken Sie auf Schließen, wenn Sie fertig sind.

Verwenden von Transact-SQL

SQL Server

Führen Sie sp_estimate_data_compression_savings in SQL Server aus, und aktivieren Sie dann die Komprimierung für die Tabelle oder den Index. Weitere Informationen finden Sie in den folgenden Abschnitten.

Aktivieren der Komprimierung in einer Tabelle

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. Im Beispiel wird zunächst die gespeicherte Prozedur sp_estimate_data_compression_savings ausgeführt, um die geschätzte Größe des Objekts zurückzugeben, wenn die ROW Komprimierungseinstellung verwendet werden soll. Anschließend wird die Komprimierung für alle Partitionen in der angegebenen Tabelle aktiviert ROW .

    USE AdventureWorks2022;
    GO
    EXEC sp_estimate_data_compression_savings 'Production', 'TransactionHistory', NULL, NULL, 'ROW';
    
    ALTER TABLE Production.TransactionHistory REBUILD PARTITION = ALL
    WITH (DATA_COMPRESSION = ROW);
    GO
    

Aktivieren der Komprimierung in einem Index

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. Im Beispiel wird zuerst die sys.indexes -Katalogsicht abgefragt, um den Namen und index_id für jeden Index der Tabelle Production.TransactionHistory zurückzugeben. Anschließend wird die gespeicherte Prozedur sp_estimate_data_compression_savings ausgeführt, um die geschätzte Größe der angegebenen Index-ID zurückzugeben, wenn die PAGE Komprimierungseinstellung verwendet werden soll. Schließlich erstellt das Beispiel die Index-ID 2 (IX_TransactionHistory_ProductID), wobei die Komprimierung angegeben PAGE wird.

    USE AdventureWorks2022;
    GO
    SELECT name, index_id
    FROM sys.indexes
    WHERE OBJECT_NAME (object_id) = N'TransactionHistory';
    
    EXEC sp_estimate_data_compression_savings
        @schema_name = 'Production',
        @object_name = 'TransactionHistory',
        @index_id = 2,
        @partition_number = NULL,
        @data_compression = 'PAGE';
    
    ALTER INDEX IX_TransactionHistory_ProductID ON Production.TransactionHistory REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);
    GO
    

In Azure SQL-Datenbank

Die gespeicherte Prozedur wird von der sp_estimate_data_compression_savings Azure SQL-Datenbank nicht unterstützt. Die folgenden Skripts ermöglichen die Komprimierung, ohne die Komprimierungsmenge zu schätzen.

Aktivieren der Komprimierung in einer Tabelle

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. Im Beispiel wird die Komprimierung für alle Partitionen in der angegebenen Tabelle aktiviert ROW .

    USE AdventureWorks2022;
    GO
    
    ALTER TABLE Production.TransactionHistory REBUILD PARTITION = ALL
    WITH (DATA_COMPRESSION = ROW);
    GO
    

Aktivieren der Komprimierung in einem Index

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. Im Beispiel wird zuerst die sys.indexes -Katalogsicht abgefragt, um den Namen und index_id für jeden Index der Tabelle Production.TransactionHistory zurückzugeben. Schließlich erstellt das Beispiel die Index-ID 2 (IX_TransactionHistory_ProductID), wobei die Komprimierung angegeben PAGE wird.

    USE AdventureWorks2022;
    GO
    SELECT name, index_id
    FROM sys.indexes
    WHERE OBJECT_NAME (object_id) = N'TransactionHistory';
    
    ALTER INDEX IX_TransactionHistory_ProductID ON Production.TransactionHistory REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);
    GO
    

Weitere Informationen finden Sie unter ALTER TABLE (Transact-SQL) und ALTER INDEX (Transact-SQL).

Siehe auch