Sappiamo tutti che le impostazioni di default dell'autogrow dei file sono davvero troppo troppo basse per database di media dimensione. In particolare il transaction log ha come impostazione di default il 10% e la dimensione iniziale dello stesso è di 1MB.
In praticamente ogni situazione questo significa che il transcation log inizia a crescere si da subito, generando molti Virtual-Log Files (file "virtuali" con la quale è suddiviso e gestito il transaction log).
Questo è (molto) male, in particolare l'impatto sulle performance è davvero devastante su SQL Server 2000. Il bel post di Tony Rogerson è molto chiaro in merito:
| | Many VLF’s | Few VLF’s |
| Backup Transaction Log | 27 seconds | 22 seconds |
| Update with Triggers | 98 seconds | 28 seconds |
mentre su SQL Server 2005 il problema non si presenta.
Come ricorda anche Tony, però, questo non significa che si possa evitare di impostare correttamente dimensione iniziale e rateo di crescita del transaction log. Infatti durante l'operazione di growth del transaction log, ogni transazione è sospesa fino al termine dell'espansione del file (ricordate ce per il transaction log l'instant file initialization non è applicabile). E' quindi bene impostare un valore iniziale sufficientemente grande da non richiedere immediati autogrow, ed un rateo di crescita sufficientemente ampio da non richierdene troppi.
Know your logs! :-)