Articles

tömörítés az SQL Server: COMPRESS and DECOMPRESS

Posted by admin

a Twitteren nemrég megkérdeztem:

valaki, akit ismerek, használja a COMPRESS és DECOMPRESS funkciókat a T-SQL – ben?

azoknak, akik igennel válaszoltak, megkérdeztem:

mi késztette erre a ROW vagy PAGE tömörítéssel szemben?

Joey D ‘ Antoni (blog | Twitter), az egyik társszerzőm emlékeztetett arra, hogy a sor-és oldaltömörítés nem működik a LOB (“nagy objektum”) adatokon. Dave Dustin (Twitter) és Niko Neugebauer (blog | Twitter) azt mondták, hogy kifejezetten a COMPRESS értéket használják a LOB-adatokhoz.

Kódváltozások

ezeknek a funkcióknak a használata a meglévő kód módosítását igényli, mert az adatok beszúrásakor a COMPRESS funkciót kell használni. Dave és Niko úgy csinálták, hogy elrejtették a funkcionalitást a nézetekben.

ha nem tudja módosítani a kódot a környezetben, akkor lehet, hogy a sor-és oldaltömörítéshez, vagy esetleg a columnstore indexekhez kell folyamodnia.

hogyan működik?

megjelent az SQL Server 2016, COMPRESS kihasználja a nyílt forráskódú GZIP tömörítési algoritmust, és csökkentheti a felhasznált helyet akár 90% – kal attól függően, hogy milyen típusú adatokat. Az adatok VARBINARY(MAX) adattípusként kerülnek tárolásra:

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

DECOMPRESS az adatok újbóli kiolvasására szolgál:

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

hol használhatnám?

ez kiválóan alkalmas olyan LOB adatok nyomon követésére, amelyeket nem kell gyakran lekérdezni, például JSON és XML szöveget tartalmazó nagy karakterláncok. Amint azt egy korábbi bejegyzésben megjegyeztük, az XML adattípus nem biztos, hogy alkalmas auditálási célokra, mert tartósan módosítja az adatokat, míg a COMPRESS megfelelő tárolási mechanizmus lenne, mert az adatok pontosan ugyanazok, amikor újra kiolvasják.

vannak-e korlátozások?

a tömörített adatokat nem lehet indexelni, mert azok tömörített bájttömbként vannak tárolva. Ha indexet szeretne létrehozni, használhatja a sor – vagy oldaltömörítést, és remélheti a legjobbat, vagy használhat egy számított oszlopot, amely tartalmazza az oszlopból szükséges adatokat, és indexelheti azt.

Related Post

Leave A Comment