Zahteve: V bazi podatkov SQL Server obstaja tabela (npr. log tabela, tabela log zahtev), ki zavzame zelo velik prostor na disku, morda več sto GB, kako zmanjšati porabo prostora v tabeli? Stiskanje podatkov (varčevanje s prostorom) je mogoče omogočiti za zelo ponavljajoče se besedilo (npr. HTML, JSON, dnevniki).
Kompresija vrstic
Stiskanje spremeni fizično shranjevanje podatkov, ne pa tudi logične strukture podatkov. Postopek kompresije linij:
Identificirajte tip podatkov vsakega stolpca in ga pretvorite v spremenljivo dolžino Nazadnje se količina zahtevkov za skladiščni prostor zmanjša na dejansko povpraševanje Po stiskanju se količina shranjenih podatkov na vsaki strani poveča Po stiskanju zmanjšajte količino metapodatkov Na primer, če je podatkovni tip stolpca smallint, sistem privzeto dodeli 2 bajta V resnici pa se uporablja le 1 bajt prostora, in če je stiskanje omogočeno na tabeli, ga je mogoče razporediti po potrebi
Stiskanje PAGE
Stiskanje strani izvaja dodatne operacije za izboljšanje stiskanja vrstic Glavne operacije: stiskanje vrstic, stiskanje predpon, stiskanje v slovarju
Poraba procesorja: stiskanje strani > stiskanje vrstic
Preizkus
Ustvarite novo tabelo Users1 in Users2, obe vstavite 100.000 podatkov, SQL skripta pa je naslednja:
Za ogled zasedenosti prostora v tabeli, ki znaša vse 3,27 MB, je ukaz naslednji:
Kot je prikazano spodaj:
Za ogled stanja stiskanja tabele Users2 je ukaz naslednji:
Kot je prikazano spodaj:
sp_estimate_data_compression_savingsOcenite prihranke, ki se lahko zgodijo, ko omogočite tabele ali particije za vrstice, strani, shrambe stolpcev, arhive stolpčnega shranjevanja ali stiskanje XML. Ukaz je naslednji:
Izhod je naslednji:
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 Indeks zavzema ≈ 3,29 MB z trenutnimi nastavitvami stiskanja size_with_requested_compression_setting (KB) 1296 KB Ocenjena velikost ≈ 1,27 MB, če omogočite novo metodo stiskanja, ki jo zahtevate, kot sta PAGE ali ROW Za izvedbo stiskanja strani je ukaz naslednji:
Primerjava učinkov:Tabela Users2 je 3,27 MB pred stiskanjem in 1,23 MB po stiskanju, kot je prikazano na spodnji sliki:
Vizualizacija je naslednja:
Referenčni:
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna. |