Gestione delle dimensioni del file di log delle transazioni

In alcuni casi, può essere utile per ridurre o espandere fisicamente il file di log fisico del log delle transazioni di un database SQL Server. In questo argomento sono contenute informazioni sul monitoraggio delle dimensioni di un log delle transazioni SQL Server, sulla relativa compattazione, sull'aumento delle dimensioni di un file di log delle transazioni, sull'ottimizzazione del tasso di aumento del log delle transazioni di tempdb e sul controllo dell'aumento delle dimensioni di un file di log delle transazioni.

Contenuto dell'argomento

  • Monitoraggio dell'utilizzo dello spazio del log

  • Compattazione del file di log

  • Aggiunta o aumento delle dimensioni di un file di log

  • Ottimizzazione delle dimensioni del log delle transazioni di tempdb

  • Controllo dell'aumento delle dimensioni di un file di log delle transazioni

Monitoraggio dell'utilizzo dello spazio del log

È possibile monitorare l'utilizzo dello spazio del log mediante DBCC SQLPERF (LOGSPACE). Questo comando restituisce informazioni sulla quantità di spazio del log attualmente utilizzata e indica quando il log delle transazioni deve essere troncato. Per ulteriori informazioni, vedere DBCC SQLPERF (Transact-SQL). Per informazioni sulle dimensioni correnti di un file di log, sulle relative dimensioni massime e sull'opzione di aumento automatico dimensioni per il file, è anche possibile utilizzare le colonne size, max_size e growth per il file di log in sys.database_files. Per ulteriori informazioni, vedere sys.database_files (Transact-SQL).

Nota importanteImportante

È consigliabile evitare l'overload del disco per il log.

[Torna all'inizio]

Compattazione del file di log

Per ridurre la dimensione fisica di un file di log fisico, è necessario ridurre il file di log. Ciò può risultare utile se si è a conoscenza del fatto che un file di log delle transazioni contiene spazio inutilizzato che non sarà più necessario. La compattazione può verificarsi solo mentre il database è online e quando almeno un file di log virtuale è disponibile. In alcuni casi, la compattazione del log potrebbe non essere possibile finché il log non viene troncato.

[!NOTA]

Fattori come una transazione con esecuzione prolungata, che mantiene i file di log virtuali attivi per un lungo periodo di tempo, possono limitare in tutto o in parte la compattazione del log. Per informazioni sugli altri fattori che possono ritardare il troncamento del log, vedere Log delle transazioni (SQL Server).

Il processo di compattazione di un file di log comporta la rimozione di uno o più file di log virtuali che non contengono alcuna parte del log logico (ossia file di log virtuali inattivi). Quando si compatta un file di log delle transazioni, viene rimosso dalla fine del file di log un numero di file di log virtuali inattivi sufficiente a ridurre il log approssimativamente alle dimensioni di destinazione.

Per compattare un file di log (senza compattare i file di database)

Per monitorare gli eventi di compattazione dei file di log

To monitor log space

[!NOTA]

La compattazione dei file di log e di database può essere impostata in modo da essere eseguita automaticamente. È consigliabile tuttavia evitare di eseguire la compattazione automatica impostando la proprietà del database autoshrink su FALSE per impostazione predefinita. Se autoshrink viene impostato su TRUE, la compattazione automatica riduce le dimensioni di un file solo quando più del 25 percento dello spazio del file risulta inutilizzato. Il file viene compattato fino a quando la percentuale di spazio inutilizzato nel file non risulta pari al 25 percento oppure fino a quando il file non raggiunge le dimensioni originali, a seconda di quale tra questi due sia il valore maggiore. Per informazioni sulla modifica dell'impostazione della proprietà autoshrink, vedere Visualizzare o modificare le proprietà di un database (utilizzo della proprietà Auto Shrink nella pagina Opzioni) o Opzioni ALTER DATABASE SET (Transact-SQL) (utilizzo dell'opzione AUTO_SHRINK).

[Torna all'inizio]

Aggiunta o aumento delle dimensioni di un file di log

In alternativa, è possibile guadagnare spazio aumentando le dimensioni del file di log esistente, se lo spazio è sufficiente, oppure aggiungendo un file di log al database, in genere in un disco diverso.

  • Per aggiungere un file di log al database, utilizzare la clausola ADD LOG FILE dell'istruzione ALTER DATABASE. L'aggiunta di un file di log consente l'aumento delle dimensioni del log.

  • Per aumentare le dimensioni del file di log, utilizzare la clausola MODIFY FILE dell'istruzione ALTER DATABASE, specificando la sintassi SIZE e MAXSIZE. Per ulteriori informazioni, vedere ALTER DATABASE (Transact-SQL).

[Torna all'inizio]

Ottimizzazione delle dimensioni del log delle transazioni di tempdb

Il riavvio di un'istanza del server riporta il log delle transazioni del database tempdb alle dimensioni originali, antecedenti all'aumento automatico delle dimensioni. Questo può comportare una riduzione delle prestazioni del log delle transazioni di tempdb. Per evitare tale overhead, è possibile incrementare le dimensioni del log delle transazioni di tempdb dopo l'avvio o il riavvio dell'istanza del server. Per ulteriori informazioni, vedere Database tempdb.

[Torna all'inizio]

Controllo dell'aumento delle dimensioni di un file di log delle transazioni

È possibile utilizzare l'istruzione ALTER DATABASE (Transact-SQL) per gestire la crescita di un file di log delle transazioni. Tenere presente quanto segue:

  • Per modificare le dimensioni del file corrente in unità KB, MB, GB e TB, utilizzare l'opzione SIZE.

  • Per modificare l'incremento di crescita, utilizzare l'opzione FILEGROWTH. Il valore 0 indica che l'aumento automatico delle dimensioni è disattivato e non è consentita l'allocazione di spazio aggiuntivo. Anche un piccolo aumento automatico delle dimensioni di un file di log può comportare una riduzione delle prestazioni. È consigliabile specificare un incremento di crescita per un file di log sufficientemente grande da consentire di evitare l'espansione frequente. L'incremento di crescita predefinito pari al 10% è solitamente appropriato.

    Per informazioni sulla modifica della proprietà relativa all'incremento di crescita per un file di log, vedere ALTER DATABASE (Transact-SQL).

  • Per controllare le dimensioni massime di un file di log in unità KB, MB, GB e TB o per impostare la crescita su UNLIMITED, utilizzare l'opzione MAXSIZE.

[Torna all'inizio]

Vedere anche

Riferimento

BACKUP (Transact-SQL)

Concetti

Risolvere i problemi relativi a un log delle transazioni completo (Errore di SQL Server 9002)