Krav: I SQL Server-databasen findes der en tabel (f.eks. logtabel, anmodningslogtabel), som optager en meget stor diskplads, måske flere hundrede GB, hvordan kan man reducere brugen af tabelplads? Datakomprimering (pladsbesparelse) kan aktiveres for meget gentagende tekst (f.eks. HTML, JSON, logfiler).
ROW-kompression
Komprimering vil ændre den fysiske lagring af dataene, men ikke den logiske struktur af dataene. Processen med linjekompression:
Identificér datatypen for hver kolonne og konverter den til en variabel længde Endelig reduceres mængden af lagerpladsanmodninger til den faktiske efterspørgsel Efter komprimering øges mængden af lagrede data på hver side Efter komprimering reduceres mængden af metadata For eksempel, hvis datatypen for en kolonne er smallint, allokerer systemet som standard 2 bytes Men i virkeligheden bruges kun 1 byte plads, og hvis komprimering er aktiveret på tabellen, kan det tildeles efter behov
PAGE-komprimering
Sidekomprimering udfører yderligere operationer for at forbedre rækkekomprimeringen Hovedoperationer: linjekomprimering, præfikskomprimering, ordbogskomprimering
CPU-forbrug: PAGE-komprimering > rækkekomprimering
Test
Opret en ny Users1- og Users2-tabell, begge indsætter 100.000 datastykker, og SQL-scriptet er som følger:
For at se bordpladsens belægning, som alle er 3,27 MB, er kommandoen som følger:
Som vist nedenfor:
For at se komprimeringsstatus for Users2-tabellen er kommandoen som følger:
Som vist nedenfor:
sp_estimate_data_compression_savingsVurder de besparelser, der kan opstå, når du aktiverer tabeller eller partitioner for rækker, sider, kolonnelagre, kolonnearkiver eller XML-komprimering. Kommandoen er som følger:
Outputtet er som følger:
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) Users2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB Indekset optager ≈ 3,29 MB med de nuværende komprimeringsindstillinger size_with_requested_compression_setting (KB) 1296 KB Anslået footprint ≈ 1,27 MB, hvis du aktiverer den nye komprimeringsmetode, du anmoder om, såsom PAGE eller ROW For at udføre sidekomprimering er kommandoen som følger:
Sammenligning af effekter:Users2-tabellen er 3,27 MB før komprimering og 1,23 MB efter komprimering, som vist i figuren nedenfor:
Visualiseringen er som følger:
Henvisning:
Hyperlink-login er synlig.
Hyperlink-login er synlig.
Hyperlink-login er synlig. |