Comprimarea bazei de date

Comprimarea fișierelor se face întotdeauna de la sfârșit. De exemplu, în cazul în care există 5 GB de fișiere și în care ca valoarea argumentului target_size DBCC SHRINKFILE set de instrucțiuni de 4 GB, componenta Baza de date Motor elibera cantitatea maximă de spațiu de la ultimul fișier gigabyte. Dacă există fișe ocupate în fișierul de eliberat, motorul bazei de date le va muta mai întâi la partea care trebuie salvată. Puteți comprima baza de date numai în măsura în care nu este suficient spațiu liber. De exemplu, în cazul în care baza de date 5GB conține dimensiunea de 4 GB de date, și ca valoarea argumentului target_size DBCC SHRINKFILE set de instrucțiuni de 3 GB, acesta va fi lansat doar 1 GB.







Dacă parametrul bazei de date AUTO_SHRINK este setat la ON, motorul bazei de date comprimă automat bazele de date care au spațiu liber. Acest parametru este configurat utilizând instrucțiunea ALTER DATABASE. Implicit, acest parametru este setat la OFF. Motorul bazei de date verifică periodic utilizarea spațiului de pe disc în fiecare bază de date. Dacă parametrul AUTO_SHRINK din baza de date este setat la ON, motorul bazei de date reduce dimensiunea fișierelor din această bază de date. Această operație este efectuată în fundal și nu afectează acțiunile utilizatorului din baza de date.

Setarea modului de comprimare automată a bazei de date

Baza de date sau fișierele sale pot fi comprimate manual utilizând instrucțiunea DBCC SHRINKDATABASE sau DBCC SHRINKFILE. În cazul în care declarația DBCC SHRINKDATABASE sau DBCC SHRINKFILE nu se poate rezerva tot spațiul de disc specificat în fișierul jurnal, un mesaj informativ care indică faptul că trebuie să fie emise acțiunea, care trebuie urmate pentru a permite spațiu liber pe disc. Pentru mai multe informații despre comprimarea fișierelor de jurnal, consultați Comprimarea jurnalului de tranzacții.

Operațiile DBCC SHRINKDATABASE și DBCC SHRINKFILE pot fi oprite în orice etapă a procesului și toate lucrările efectuate sunt salvate.

Cu instrucțiunea DBCC SHRINKDATABASE, nu puteți comprima întreaga bază de date la o dimensiune mai mică decât baza de date originală. Prin urmare, dacă baza de date a fost creată cu o dimensiune de 10 MB și apoi a crescut la 100 MB, aceasta poate fi comprimată numai la 10 MB, chiar dacă toate datele sunt șterse din baza de date.







Cu toate acestea, utilizând instrucțiunea DBCC SHRINKFILE, puteți comprima fișierele individuale de baze de date la o dimensiune mai mică decât fișierul de bază de date inițial. În acest caz, fiecare fișier trebuie comprimat separat.

Nu puteți comprima o bază de date sau un jurnal de tranzacții atunci când acestea sunt copiate în siguranță. Pe de altă parte, nu puteți crea o copie de rezervă a unei baze de date sau a unui jurnal de tranzacții atunci când este comprimată.

Comprimarea bazei de date

Comprimarea unui fișier de date sau a unui fișier jurnal

Există valori finale fixe la care puteți comprima fișierul jurnal de tranzacții. Dimensiunea fișierelor jurnal virtuale din jurnal determină limitele de comprimare. Prin urmare, fișierul jurnal nu poate fi comprimat la o dimensiune mai mică decât dimensiunea fișierului jurnal virtual. În plus, puteți reduce dimensiunea fișierului jurnal numai în incremente egale cu dimensiunea fișierului jurnal virtual. De exemplu, un fișier jurnal de tranzacții de 1 GB poate consta din cinci fișiere log logice de 200 MB fiecare. Când comprimați fișierul jurnal de tranzacții, fișierele jurnal virtual neutilizate sunt șterse, dar trebuie să rămână cel puțin două astfel de fișiere. Deoarece fiecare fișier jurnal virtual din acest exemplu este de 200 MB, puteți comprima jurnalul de tranzacții la cel puțin 400 MB în incremente de 200 MB. Pentru a putea comprima fișierul jurnal de tranzacții mai strâns, ar trebui să creați un jurnal mic și să setați modul automat pentru a crește dimensiunea acestuia, în loc să creați imediat un fișier jurnal de tranzacții mare.

recomandări

Când intenționați să comprimați o bază de date sau un fișier, luați în considerare următoarele considerente.

  • Cel mai mare efect al operației de comprimare este realizat dacă este efectuat după o operație care creează o mulțime de spațiu neutilizat (trunchierea sau ștergerea unei mese).
  • Cele mai multe baze de date necesită o anumită cantitate de spațiu liber pentru a efectua operații zilnice normale. Dacă baza de date este comprimată în mod regulat, dar din nou crește în mărime, aceasta înseamnă că spațiul eliberat în timpul comprimării este necesar pentru operațiile obișnuite. În astfel de cazuri, re-comprimarea bazei de date nu are sens.
  • Funcționarea comprimării bazei de date nu elimină fragmentarea indexurilor și chiar invers crește, de obicei, aceasta. De exemplu, nu comprimați baza de date sau fișierul după reconstruirea indexurilor. Acesta este un alt motiv pentru a refuza re-compresia bazei de date.
  • Nu setați parametrul de bază de date AUTO_SHRINK la ON fără motiv suficient.

Este posibilă blocarea compresiei tranzacțiilor printr-o tranzacție care este efectuată cu un nivel de izolare bazat pe controlul versiunilor rândurilor. De exemplu, atunci când se efectuează o operație la scară largă de îndepărtare nivel de izolare bazat pe versionare rând pentru a efectua manual DATABASE DBCC SHRINK, apoi, înainte de a trece la un fișier comprimat, acesta va aștepta finalizarea operației de ștergere. În acest caz, operațiunea DBCC SHRINKFILE și ieșirea DBCC SHRINKDATABASE în SQL Server jurnal de mesaj de eroare de informare (5202 pentru SHRINKDATABASE și 5203 pentru SHRINKFILE), făcându-l la fiecare 5 minute în timpul primei ore, iar apoi un mesaj la fiecare oră. Pentru mai multe informații, consultați DBCC SHRINKDATABASE (Transact-SQL).







Articole similare

Trimiteți-le prietenilor: