Un database SQL Server compatto

9 ottobre 2007

Un database di MS-SQL Server è una collezione di oggetti (tabelle, viste, stored procedure, etc..) ed è costituito da almeno un file di dati che ospita le pagine di dati ed un file di log che ospita tutte le transazioni prima che queste vengano completate o annullate.

Una pagina di dati è l’allocazione minima su disco di una tabella di database la cui dimensione è pari a 8Kb, di cui 8.060 bytes riservati ai dati. Molto spesso, lo sviluppatore di applicazioni può ignorare completamente l’esistenza di tali file: egli fa riferimento agli oggetti del database indipendentemente da dove essi siano fisicamente situati o dalle loro dimensioni, quantità e posizionamento. Un amministratore di database, invece, deve fare i conti inevitabilmente con questi file, come nel caso della compressione del database.

Perché comprimere?

Un database nasce con almeno due file, uno per i dati e uno per il log delle transazioni. In fase di creazione, il DBA può specificare una dimensione non inferiore a 1 MB per il file di dati, oppure lasciare che venga ereditata dal database di sistema, denominato “model”. Tutti i nuovi DB, infatti, ereditano tabelle, viste di sistema e tutte le impostazioni da model.

Dal momento della sua creazione, la vita del database è caratterizzata, oltre che da operazioni di lettura, da operazioni di inserimento, modifica e cancellazione. Gli inserimenti e le modifiche di dati, accrescono lo spazio occupato, sia dalle pagine di dati nei file di dati, sia dalle transazioni nei file di log. Raggiunto lo spazio massimo del file assistiamo all’autoincremento delle sue dimensioni (sempre che l’incremento automatico sia stato impostato).

Le cancellazioni invece, e in qualche misura le modifiche, liberano spazio dal file di dati senza però influenzarne le dimensioni, in altre parole senza rilasciare questo spazio non più utilizzato al sistema operativo.

Ecco quindi che può rendersi necessario eliminare lo spazio inutile ed ottenere un database compatto (ovvero ottenere file dati e file di log compatti) e lasciare lo spazio libero per altri usi.

Come operare

Per ottenere file compatti e più efficienti abbiamo tre possibilità a disposizione:

1. L’istruzione DBCC SHRINKFILE

Serve per compattare un determinato file di database (dati o log) e, per default, rilascia lo spazio libero al sistema operativo.

Sintassi di DBCC SHRINKFILE

DBCC SHRINKFILE
  ( { file_name | file_id }
    { [ , target_size ]
      | [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ]
    }
  )[WITH NO_INFOMSGS]

Se vuoi aggiornamenti su Un database SQL Server compatto inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Un database SQL Server compatto

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy