Krav: I SQL Server-databasen finnes det en tabell (f.eks. loggtabell, forespørselsloggtabell) som tar opp en veldig stor diskplass, kanskje hundrevis av GB, hvordan kan man redusere bruken av tabellplass? Datakomprimering (plasssparing) kan aktiveres for svært repeterende tekst (f.eks. HTML, JSON, logger).
ROW-kompresjon
Komprimering vil endre den fysiske lagringen av dataene, men ikke den logiske strukturen til dataene. Prosessen med linjekomprimering:
Identifiser datatypen for hver kolonne og konverter den til variabel lengde Til slutt reduseres mengden lagringsplassforespørsler til faktisk etterspørsel Etter komprimering øker mengden lagrede data på hver side Etter komprimering, reduser mengden metadata For eksempel, hvis datatypen til en kolonne er smallint, allokerer systemet som standard 2 byte Men i realiteten brukes bare 1 byte plass, og hvis komprimering er aktivert på tabellen, kan det tildeles på forespørsel
PAGE-komprimering
Sidekomprimering utfører ekstra operasjoner for å forbedre radkomprimeringen Hovedoperasjoner: linjekomprimering, prefikskomprimering, ordbokkomprimering
CPU-forbruk: PAGE-komprimering > radkomprimering
Prøve
Opprett nye Users1- og Users2-tabeller, begge setter inn 100 000 databiter, og SQL-skriptet er som følger:
For å se bordplassen, som alle er 3,27 MB, er kommandoen som følger:
Som vist nedenfor:
For å se komprimeringsstatusen til Users2-tabellen, er kommandoen som følger:
Som vist nedenfor:
sp_estimate_data_compression_savingsAnslå besparelsene som kan oppstå når du aktiverer tabeller eller partisjoner for rader, sider, kolonnelagre, kolonnearkiver eller XML-komprimering. Kommandoen er som følger:
Resultatet 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 Indeksen opptar ≈ 3,29 MB med de nåværende komprimeringsinnstillingene size_with_requested_compression_setting (KB) 1296 KB Estimert fotavtrykk ≈ 1,27 MB hvis du aktiverer den nye komprimeringsmetoden du ber om, som PAGE eller ROW For å utføre sidekomprimering er kommandoen som følger:
Sammenligning av effekter:Users2-tabellen er 3,27 MB før komprimering og 1,23 MB etter komprimering, som vist i figuren nedenfor:
Visualiseringen er som følger:
Referanse:
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig. |