Informazioni sulle prestazioni di recupero in SQL Server

Le prestazioni di recupero sono incentrate principalmente sul ripristino a seguito dell'arresto anomalo del sistema piuttosto che sul recupero a seguito del ripristino di un backup. È tuttavia possibile implementare una serie di ottimizzazioni tese a migliorare le prestazioni di recupero a seguito del ripristino di un backup.

Il tempo di recupero dipende dalla quantità di operazioni eseguite a partire dall'ultimo checkpoint e dalla quantità di operazioni eseguite da tutte le transazioni attive nell'istante in cui si è verificata la perdita dei dati. SQL Server utilizza l'opzione di configurazione recovery interval per impostare il numero massimo approssimativo di minuti per database necessari a SQL Server per recuperare i database. Il valore impostato in recovery interval determina la frequenza di generazione dei checkpoint. In un sistema di elaborazione delle transazioni in linea (OLTP) che utilizza transazioni brevi, il tempo identificato da recovery interval costituisce il fattore che influisce maggiormente sul tempo di recupero.

Dopo l'installazione, SQL Server imposta recovery interval su zero. Quando recovery interval è impostata sul valore predefinito e non sono presenti transazioni a esecuzione prolungata, il recupero di ogni database dovrebbe impiegare circa 1 minuto o meno. Nel recupero di dati ripristinati, se nell'istante in cui si è verificata la perdita dei dati erano attive transazioni a esecuzione prolungata, il tempo di recupero è determinato dal tempo impiegato per eseguire il rollback degli effetti di tali transazioni. In SQL Server 2005 e versioni successive il database è comunque disponibile durante la fase di rollback di un ripristino a seguito dell'arresto anomalo del sistema o di un failover durante il mirroring del database (una funzionalità denominata recupero rapido).

Se il recupero impiega ripetutamente più di un 1 minuto per singolo database, recovery interval è impostata su zero e non vi sono transazioni a esecuzione prolungata di cui eseguire il rollback, è consigliabile rivolgersi al supporto tecnico per risolvere il problema di prestazioni del recupero.

Il report di stato del recupero è basato sui file di log virtuali relativi a un database. All'inizio della procedura di recupero vengono eseguite l'analisi e la scansione del log a partire dall'ultimo checkpoint generato. Sulla base dei risultati ottenuti nella fase di analisi viene stimata la quantità di log che sarà letta durante il recupero. La quantità letta di log è utilizzata per creare il report di stato del recupero.

Se il valore di recovery interval è diverso da quello predefinito, il recupero del database impiega tanto più tempo per essere completato quanto il valore stesso dell'opzione di configurazione. Ad esempio, impostando recovery interval su 10, la procedura di recupero impiegherà un tempo 10 volte superiore rispetto a quello che impiegherebbe se recovery interval fosse impostata sul valore predefinito zero.

Man mano che le dimensioni del log aumentano, è opportuno utilizzare incrementi sempre maggiori per ottenere un più breve tempo di avvio di SQL Server. Maggiori sono gli incrementi di log, maggiore sarà il tempo impiegato da SQL Server per inizializzarli.

Durante il recupero a seguito di un'operazione di ripristino, lasciare che il server completi il processo di rollback nel caso sia stata terminata una transazione a esecuzione prolungata. La terminazione del processo del server durante l'esecuzione del rollback di una transazione a esecuzione prolungata provoca un aumento del tempo di recupero. Per evitare che il tempo impiegato dal processo di rollback aumenti, chiedere all'amministratore di sistema quale attività è in esecuzione sul server.

Se si verifica un arresto anomalo del sistema durante una transazione a esecuzione prolungata, SQL Server avvia il processo di recupero. In questo caso, la velocità del recupero è maggiore dato che il database è disponibile durante la fase di rollback.

Per informazioni sulle modalità di riduzione del tempo di recupero durante il ripristino di dati da backup con il modello di recupero con registrazione completa, vedere Riduzione dei tempi di recupero durante il ripristino di un database.