Condividi tramite


Abilitare la compressione su una tabella o un indice

Si applica a: SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)

Questo articolo descrive come abilitare la compressione dei dati per una tabella o un indice esistente usando SQL Server Management Studio o Transact-SQL. Per abilitare la compressione dei dati durante la creazione di una tabella o di un indice, vedere gli esempi in Creare un indice compresso e Creare una tabella che usa la compressione di riga.

Limiti

  • Le tabelle di sistema non possono essere abilitate per la compressione.

  • Se la tabella è un heap, l'operazione di ricompilazione per la modalità ONLINE sarà a thread singolo. Usare la modalità OFFLINE per un'operazione di ricompilazione di heap multithread. Le operazioni di ricompilazione sono OFFLINE a meno che non venga specificata l'opzione ONLINE. Per informazioni complete sull'esecuzione di una ricompilazione ONLINE, vedere Eseguire operazioni online sugli indici.

  • Non è possibile modificare l'impostazione di compressione di una singola partizione se la tabella include indici non allineati.

  • Diversi tipi di dati non sono interessati dalla compressione dei dati. Per altri dettagli, vedere Impatto della compressione delle righe sull'archiviazione.

Autorizzazioni

È richiesta l'autorizzazione ALTER per la tabella o l'indice.

Usare SQL Server Management Studio

  1. In Esplora oggetti espandere il database contenente la tabella che si desidera comprimere, quindi espandere la cartella Tabelle.

  2. Per comprimere un indice, espandere la tabella contenente l'indice che si desidera comprimere, quindi espandere la cartella Indici.

  3. Fare clic con il pulsante destro del mouse sulla tabella o sull'indice da comprimere, scegliere Archiviazione e selezionare Gestione compressione....

  4. Nella Compressione guidata dati, nella pagina Benvenuto nella Compressione guidata dati, selezionare Avanti.

  5. Nella pagina Seleziona tipo di compressione selezionare il tipo di compressione da applicare a ogni partizione nella tabella o nell'indice che si desidera comprimere. Al termine, selezionare Avanti.

    Le opzioni seguenti sono disponibili nella pagina Seleziona tipo di compressione :

    • Casella di controlloUsa lo stesso tipo di compressione per tutte le partizioni

      Selezionare questa opzione per configurare la stessa impostazione di compressione per tutte le partizioni. La casella di selezione viene abilitata e la colonna Tipo di compressione nella griglia viene disabilitata. Quando selezionate, le opzioni nell'elenco adiacente sono Nessuno, Riga, e Pagina.

    • Numero partizioni

      Elenca tutte le partizioni nella tabella o nell'indice. La colonna è di sola lettura.

    • Tipo di compressione

      Selezionare l'opzione di compressione per ciascuna partizione. Questa opzione non è disponibile se Usa lo stesso tipo di compressione per tutte le partizioni è selezionata. Le opzioni nell'elenco sono Nessuno, Riga, e Pagina.

    • Limite

      Visualizza il limite della partizione. La colonna è di sola lettura.

    • Conteggio righe

      Visualizza il numero di righe nella partizione. La colonna è di sola lettura.

    • Spazio corrente

      Visualizza lo spazio corrente occupato dalla partizione, espresso in megabyte (MB). La colonna è di sola lettura.

    • Spazio compresso richiesto

      Quando si seleziona Calcola, in questa colonna vengono visualizzate le dimensioni stimate di ciascuna partizione dopo la compressione eseguita mediante l'uso dell'impostazione specificata nella colonna Tipo di compressione. La colonna è di sola lettura.

    • Calcola

      Selezionare per eseguire la stima delle dimensioni di ciascuna partizione dopo la compressione eseguita mediante l'uso dell'impostazione specificata nella colonna Tipo di compressione.

  6. Nella pagina Seleziona un'opzione di output specificare il modo in cui si desidera completare la compressione. Selezionare Crea script per creare uno script SQL in base alle pagine precedenti della procedura guidata. Selezionare Esegui immediatamente per creare la nuova tabella partizionata dopo aver completato tutte le pagine rimanenti della procedura guidata. Selezionare Pianifica per creare la nuova tabella partizionata in un momento predeterminato nel futuro.

    Se si seleziona Crea script, in Opzioni di scriptingsono disponibili le opzioni seguenti:

    • Genera script nel file

      Genera lo script come file .sql. Immettere un nome di file e la posizione nella casella Nome file o selezionare Sfoglia per aprire la finestra di dialogo Posizione file di script. In Salva con nome selezionare Testo Unicode o Testo ANSI.

    • Genera script negli Appunti

      Salva lo script negli Appunti.

    • Genera script in nuova finestra Query

      Genera lo script in una nuova finestra dell'editor di query. Si tratta della selezione predefinita.

    • Se si seleziona Pianifica, selezionare Cambia pianificazione.

    1. Nella finestra di dialogo Nuova pianificazione del processo, nella casella Nome, immettere il nome della pianificazione del processo.

    2. Nell'elenco Tipo pianificazione selezionare il tipo di pianificazione:

      • Avvia automaticamente all'avvio di SQL Server Agent

      • Avvia quando la CPU risulta inattiva

      • Periodica. Selezionare questa opzione se la nuova tabella partizionata viene aggiornata regolarmente con nuove informazioni.

      • Una volta. Questa opzione è la selezione predefinita.

    3. Selezionare o deselezionare la casella di controllo Abilitata per abilitare o disabilitare la pianificazione.

    4. Se si seleziona Periodica:

      1. Nella lista Ricorrenza specificare la Frequenza:

        • Selezionando Giornaliera, nella casella Ogni inserisci la frequenza con cui si ripete la programmazione del lavoro in giorni.

        • Se si seleziona Settimanale, nella casella Ogni immettere la frequenza in base alla quale si ripete la pianificazione del processo nelle settimane. Selezionare uno o più giorni della settimana su cui viene eseguito il programma del lavoro.

        • Se si seleziona Mensile, selezionare Giorno oppure Ogni.

          • Se si seleziona Giorno, immettere sia la data del mese in cui si desidera sia eseguita la pianificazione del processo sia la frequenza in base alla quale si ripete questa pianificazione nei mesi. Ad esempio, se si vuole che il programma del lavoro sia eseguito il giorno 15 del mese a mesi alterni, selezionare Giorno e immettere "15" nella prima casella e "2" nella seconda casella. Il numero più grande consentito nella seconda casella è "99".

          • Se si sceglie Il, selezionare il giorno specifico della settimana nel mese in cui si desidera che la pianificazione del processo venga eseguita e con quale frequenza la pianificazione si ripete nei mesi. Ad esempio, se si vuole che la programmazione dei lavori venga eseguita l'ultimo giorno feriale del mese ogni due mesi, selezionare Giorno, selezionare ultimo nel primo elenco e giorno feriale nel secondo elenco, quindi immettere "2" nell'ultima casella. Nei primi due elenchi è anche possibile selezionare primo, secondo, terzoo quarto, nonché i giorni della settimana specifici, ad esempio domenica o mercoledì. Il numero più grande consentito nell'ultima casella è "99".

      2. In Frequenza giornaliera, specificare con quale frequenza si ripete la pianificazione del lavoro nel giorno in cui viene eseguita:

        • Se si seleziona Una sola volta alle, inserire l'ora specifica del giorno in cui il programma deve essere eseguito nella casella Una sola volta alle. Immettere l'ora, il minuto e il secondo del giorno, nonché AM o PM.

        • Se si seleziona Ogni, specificare la frequenza con cui la pianificazione del lavoro viene eseguita durante il giorno scelto in Frequenza. Ad esempio, se si vuole che la pianificazione del processo sia ripetuta ogni 2 ore durante il giorno in cui viene eseguita la pianificazione, selezionare Ogni, immettere "2" nella prima casella e quindi selezionare ora/e nell'elenco. In questo elenco è anche possibile selezionare minuto/i e secondo/i. Il numero più grande consentito nella prima casella è "100".

          Nella casella A partire dalle, immettere l'ora in cui deve iniziare l'esecuzione dell'attività. Nella casella Fino alle immettere l'ora in cui la pianificazione del lavoro dovrebbe terminare la ripetizione. Immettere l'ora, il minuto e il secondo del giorno, nonché AM o PM.

      3. Sotto Durata, in Data di inizio, inserire la data in cui si desidera avviare l'esecuzione della pianificazione del processo. Selezionare Data fine o Nessuna data di fine per indicare quando deve terminare la pianificazione del lavoro. Se si seleziona Data fine, immettere la data in cui si desidera interrompere l'esecuzione della pianificazione del processo.

    5. Se si seleziona Una sola volta, in Singola occorrenza, nella casella Data immettere la data in cui l'attività pianificata verrà eseguita. Nella casella Ora, immettere l'ora in cui verrà eseguito il programma. Immettere l'ora, il minuto e il secondo del giorno, nonché AM o PM.

    6. In Riepilogo, in Descrizione, verificare che tutte le impostazioni della pianificazione del processo siano corrette.

    7. Seleziona OK.

    Dopo aver completato questa pagina, selezionare Avanti.

  7. Nella pagina Riepilogo recensioni, sotto Controlla le tue selezioni, espandere tutte le opzioni disponibili per verificare che tutte le impostazioni di compressione siano corrette. Se tutte le impostazioni sono corrette, selezionare Fine.

  8. Nella pagina Avanzamento della Compressione guidata, monitorare le informazioni sullo stato delle azioni della Creazione guidata della partizione. A seconda delle opzioni selezionate nella procedura guidata, la pagina di stato può contenere una o più azioni. Nella casella superiore viene visualizzato lo stato complessivo della procedura guidata e il numero di messaggi di stato, di errore e di avviso che la procedura ha ricevuto.

    Nella pagina Avanzamento della Compressione guidata sono disponibili le opzioni seguenti:

    • Dettagli

      Consente di visualizzare i messaggi di azione, di stato e di altro tipo restituiti dall'azione eseguita nella procedura guidata.

    • Azione

      Specifica il tipo e il nome di ciascuna azione.

    • Stato

      Indica se l'intera azione della procedura guidata ha restituito il valore Esito positivo o Esito negativo.

    • Messaggio

      Fornisce tutti i messaggi di errore o di avviso restituiti dal processo.

    • Report

      Crea un rapporto contenente i risultati della Creazione guidata partizioni. Le opzioni sono Visualizza report, Salva report su file, Copia report negli Appuntie Invia report per posta elettronica.

    • Visualizza report

      Apre la finestra di dialogo Visualizza report in cui è contenuto un report di testo dello stato della Creazione guidata partizione.

    • Salva report su file

      Apre la finestra di dialogo Salva report con nome.

    • Copia il rapporto negli Appunti

      Copia i risultati del report di avanzamento della procedura guidata negli appunti.

    • Invia report per posta elettronica

      Copia i risultati del rapporto sullo stato di avanzamento della procedura guidata in un'email.

    Al termine, selezionare Chiudi.

Usare Transact-SQL

Nel database preferito eseguire sp_estimate_data_compression_savings (Transact-SQL) e quindi abilitare la compressione nella tabella o nell'indice. Vedere le sezioni seguenti.

Gli esempi di codice in questo articolo usano il database di esempio AdventureWorks2022 o AdventureWorksDW2022, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.

Abilitare la compressione su una tabella

  1. In Esplora oggetti, connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Assicurati di essere nel contesto del tuo database.

  4. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. Nell'esempio viene prima eseguita la stored procedure sp_estimate_data_compression_savings per restituire la dimensione stimata dell'oggetto qualora venisse utilizzata l'impostazione di compressione ROW. Nell'esempio viene quindi abilitata la compressione ROW in tutte le partizioni della tabella specificata.

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

Abilitare la compressione su un indice

  1. In Esplora oggetti, connettersi a un'istanza del motore di Database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Assicurati di essere nel contesto del tuo database.

  4. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui. Nell'esempio viene innanzitutto eseguita una query sulla vista del catalogo sys.indexes per restituire il nome e index_id per ogni indice nella tabella Production.TransactionHistory. Viene quindi eseguita la stored procedure sp_estimate_data_compression_savings per restituire la dimensione stimata dell'ID indice specificato qualora venisse usata l'impostazione di compressione PAGE. Viene infine ricompilato l'ID indice 2 (IX_TransactionHistory_ProductID), specificando la compressione PAGE.

    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
    

Per altre informazioni, vedere ALTER TABLE e ALTER INDEX.