Cerințe: În baza de date SQL Server, există un tabel (de exemplu, tabel de log, tabel de log de cereri) care ocupă un spațiu de disc foarte mare, poate sute de GB, cum să reduci utilizarea spațiului de tabel? Compresia datelor (economisirea spațiului) poate fi activată pentru text foarte repetitiv (de exemplu, HTML, JSON, jurnale).
Compresia ROW
Compresia va schimba stocarea fizică a datelor, dar nu și structura logică a acestora. Procesul de compresie a liniilor:
Identificați tipul de date al fiecărei coloane și convertiți-l la o lungime variabilă În cele din urmă, cantitatea de spațiu de stocare solicitată este redusă la cererea reală După compresie, cantitatea de date stocate pe fiecare pagină crește După compresie, reduceți cantitatea de metadate De exemplu, dacă tipul de date al unei coloane este smallint, sistemul alocă implicit 2 octeți Dar, în realitate, se folosește doar 1 octet de spațiu, iar dacă compresia este activată pe masă, acesta poate fi alocat la cerere
Compresia PAGE
Compresia paginilor efectuează operații suplimentare pentru a îmbunătăți compresia rândurilor Operațiuni principale: compresia liniei, compresia prefixului, compresia dicționarului
Consum CPU: compresia PAGE > compresia rândurilor
Testa
Creează un nou tabel Users1 și Users2, fiecare inserând 100.000 de date și scriptul sql este următorul:
Pentru a vedea ocuparea spațiului tabelelor, toate având 3,27 MB, comanda este următoarea:
Așa cum se arată mai jos:
Pentru a vizualiza starea compresiei tabelului Users2, comanda este următoarea:
Așa cum se arată mai jos:
sp_estimate_data_compression_savingsEstimează economiile care pot apărea atunci când activezi tabele sau partițiile pentru rânduri, pagini, depozite de coloane, arhive de depozit de coloane sau compresie XML. Comanda este următoarea:
Rezultatul este următorul:
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) Utilizatori2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB Indicele ocupă ≈ 3,29 MB cu setările actuale de compresie size_with_requested_compression_setting (KB) 1296 KB Amprenta estimată ≈ 1,27 MB dacă activezi noua metodă de compresie pe care o soliciti, cum ar fi PAGE sau ROW Pentru a executa compresia paginii, comanda este următoarea:
Comparație a efectelor:Tabelul Users2 are 3,27 MB înainte de compresie și 1,23 MB după compresie, așa cum se arată în figura de mai jos:
Vizualizarea este următoarea:
Referință:
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă. |