Articles

komprimering i Server: komprimering og dekomprimering

Posted by admin

på kvidre for nylig spurgte jeg:

er der nogen, jeg kender, der bruger COMPRESS og DECOMPRESS funktionerne?

til dem, der svarede bekræftende, spurgte jeg:

Hvad fik dig til at beslutte dette i modsætning til ROW eller PAGE kompression?

Joey D ‘ Antoni (blog | kvidre), en af mine medforfattere, mindede mig om, at række-og sidekomprimering ikke virker på lob (“stort objekt”) data. Dave Dustin (kvidre) og Niko Neugebauer (blog | kvidre) sagde, at de specifikt bruger COMPRESS til LOB-data af denne grund.

kodeændringer

brug af disse funktioner kræver ændringer af eksisterende kode, fordi du skal bruge funktionen COMPRESS, når du indsætter data. Dave og Niko gjorde det ved at skjule funktionaliteten inde visninger.

hvis du ikke kan foretage kodeændringer i dit miljø, skal du muligvis ty til række-og sidekomprimering eller muligvis columnstore-indekser.

hvordan virker det?

udgivet med Server 2016, COMPRESS udnytter open source-komprimeringsalgoritmen og kan reducere den plads, der bruges med så meget som 90% afhængigt af den pågældende type data. Data gemmes som datatypen VARBINARY(MAX) :

INSERT INTO dbo.Table1 (Col1, Col2) VALUES ('C0001', COMPRESS('<long string goes here>'));

DECOMPRESS bruges til at læse dataene ud igen:

SELECT Col1, DECOMPRESS(Col2) AS Col2 FROM dbo.Table1 WHERE Col1 = 'C0001';

hvor ville jeg bruge det?

dette er fantastisk til at holde styr på LOB-data, der ikke behøver at blive forespurgt ofte, f.eks. Som nævnt i et tidligere indlæg er datatypen muligvis ikke egnet til revisionsformål, fordi den permanent ændrer dataene, mens COMPRESS ville være en passende lagringsmekanisme, fordi dataene er nøjagtigt de samme, når de læses igen.

er der nogen begrænsninger?

du kan ikke indeksere komprimerede data, fordi de er gemt som et komprimeret byte-array. Hvis du vil oprette et indeks, kan du enten bruge række-eller sidekomprimering og håbe på det bedste eller bruge en beregnet kolonne, der indeholder de data, du har brug for fra kolonnen, og indeksere det i stedet.

Related Post

Leave A Comment