Requisiti: Nel database SQL Server esiste una tabella (ad esempio, tabella log, tabella log richieste) che occupa uno spazio disco molto grande, magari centinaia di GB, come ridurre l'uso dello spazio delle tabelle? La compressione dei dati (risparmio di spazio) può essere abilitata per testi altamente ripetitivi (ad esempio, HTML, JSON, log).
Compressione ROW
La compressione cambierà la memorizzazione fisica dei dati, ma non la struttura logica dei dati. Il processo di compressione delle linee:
Identifica il tipo di dato di ogni colonna e convertilo in una lunghezza variabile Infine, la quantità di spazio di archiviazione ridotta alla domanda reale Dopo la compressione, la quantità di dati memorizzati su ogni pagina aumenta Dopo la compressione, riduci la quantità di metadati Ad esempio, se il tipo di dato di una colonna è smallint, il sistema alloca di default 2 byte Ma in realtà, viene utilizzato solo 1 byte di spazio e, se la compressione è abilitata sulla tavola, può essere allocata su richiesta
Compressione PAGE
La compressione delle pagine esegue operazioni aggiuntive per migliorare la compressione delle righe Operazioni principali: compressione di linea, compressione del prefisso, compressione del dizionario
Consumo CPU: compressione PAGE > compressione delle righe
Test
Crea una nuova tabella Users1 e Users2, inseriscono entrambe 100.000 pezzi di dati, e lo script sql è il seguente:
Per visualizzare l'occupazione dello spazio della tabella, tutti di 3,27 MB, il comando è il seguente:
Come mostrato di seguito:
Per visualizzare lo stato di compressione della tabella Users2, il comando è il seguente:
Come mostrato di seguito:
sp_estimate_data_compression_savingsStima i risparmi che possono verificarsi abilitando tabelle o partizioni per righe, pagine, archivi di colonne, archivi di colonne o compressione XML. Il comando è il seguente:
L'output è il seguente:
object_name schema_name index_id partition_number size_with_current_compression_setting(KB) size_with_requested_compression_setting(KB) sample_size_with_current_compression_setting(KB) sample_size_with_requested_compression_setting(KB) Utenti2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB L'indice occupa ≈ 3,29 MB con le impostazioni di compressione attuali size_with_requested_compression_setting (KB) 1296 KB Ingombro stimato ≈ 1,27 MB se abiliti il nuovo metodo di compressione richiesto, come PAGE o ROW Per eseguire la compressione della pagina, il comando è il seguente:
Confronto degli effetti:La tabella Users2 è di 3,27 MB prima della compressione e di 1,23 MB dopo la compressione, come mostrato nella figura sottostante:
La visualizzazione è la seguente:
Riferimento:
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile. |