Prasības: SQL Server datu bāzē ir tabula (piemēram, žurnāla tabula, pieprasījumu žurnāla tabula), kas aizņem ļoti lielu vietu diskā, varbūt simtiem GB, kā samazināt tabulas vietas izmantošanu? Datu saspiešanu (vietas taupīšanu) var iespējot ļoti atkārtotam tekstam (piemēram, HTML, JSON, žurnāliem).
ROW saspiešana
Saspiešana mainīs datu fizisko glabāšanu, bet ne datu loģisko struktūru. Līnijas saspiešanas process:
Katras kolonnas datu tipa identificēšana un konvertēšana mainīgā garumā Visbeidzot, krātuves vietas pieprasījumu apjoms tiek samazināts līdz faktiskajam pieprasījumam Pēc saspiešanas katrā lapā saglabāto datu apjoms tiek palielināts Pēc saspiešanas samaziniet metadatu apjomu Piemēram, ja kolonnas datu tips ir smallint, sistēma pēc noklusējuma piešķir 2 baitus Bet patiesībā tiek izmantots tikai 1 baits vietas, un, ja uz galda ir iespējota saspiešana, to var piešķirt pēc pieprasījuma
PAGE saspiešana
Lappuses saspiešana veic papildu darbības, lai uzlabotu rindu saspiešanu Galvenās darbības: līnijas saspiešana, prefiksa saspiešana, vārdnīcas saspiešana
CPU patēriņš: PAGE saspiešana > rindu saspiešana
Tests
Izveidojiet jaunas tabulas Lietotāji1 un Lietotāji2, abas ievieto 100 000 datu vienību, un sql skripts ir šāds:
Lai skatītu galda vietas aizņemtību, kas visas ir 3,27 MB, komanda ir šāda:
Kā parādīts zemāk:
Lai skatītu tabulas Users2 saspiešanas statusu, komanda ir šāda:
Kā parādīts zemāk:
sp_estimate_data_compression_savingsAprēķiniet ietaupījumus, kas var rasties, iespējojot tabulas vai nodalījumus rindām, lapām, kolonnu krātuvēm, kolonnu krātuves arhīviem vai XML saspiešanai. Komanda ir šāda:
Rezultāts ir šāds:
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) Lietotāji2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB Indekss aizņem ≈ 3,29 MB ar pašreizējiem saspiešanas iestatījumiem size_with_requested_compression_setting (KB) 1296 KB Aptuvenais nospiedums ≈ 1,27 MB, ja iespējojat jauno pieprasīto saspiešanas metodi, piemēram, PAGE vai ROW Lai izpildītu lapas saspiešanu, komanda ir šāda:
Ietekmes salīdzinājums:Tabulas Users2 lielums ir 3,27 MB pirms saspiešanas un 1,23 MB pēc saspiešanas, kā parādīts attēlā:
Vizualizācija ir šāda:
Atsauce:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama. |