Opzione recovery interval

L'opzione recovery interval consente di impostare il numero massimo di minuti necessari per il recupero di un database in MicrosoftSQL Server. Ad ogni avvio di un'istanza di SQL Server viene eseguito il recupero di ogni database, con rollback delle transazioni di cui non è stato eseguito il commit e rollforward delle transazioni delle quali è stato eseguito il commit ma le cui modifiche non risultavano ancora scritte nel disco quando l'istanza di SQL Server viene interrotta. Questa opzione di configurazione imposta un limite di tempo massimo per il recupero di ogni database. L'impostazione predefinita è 0, in base alla quale il limite di tempo viene configurato automaticamente. Ciò equivale a un tempo di recupero inferiore a un minuto e all'impostazione di checkpoint a intervalli di circa un minuto per i database attivi.

Tramite l'opzione recovery interval è possibile stabilire quando viene creato un checkpoint nei vari database di SQL Server. L'ambito di gestione dei checkpoint è il singolo database. In corrispondenza di un checkpoint di SQL Server tutte le informazioni del log e le pagine modificate vengono scaricate dalla memoria su disco. Ciò consente di ridurre i tempi di recupero grazie alla diminuzione del numero delle transazioni di cui viene eseguito il rollforward per garantirne il trasferimento sul disco. Per le modifiche eseguite prima di un checkpoint non è necessario eseguire il rollforward in quanto sono già state scaricate su disco in corrispondenza del checkpoint.

L'opzione recovery interval non ha effetto sui tempi necessari per l'annullamento delle transazioni con esecuzione prolungata. Ad esempio, se prima dell'interruzione del server sono stati eseguiti aggiornamenti tramite una transazione con esecuzione prolungata che hanno richiesto due ore, l'operazione di recupero durerà molto più a lungo rispetto al periodo di tempo specificato in recovery interval per il rollback della transazione.

In SQL Server viene eseguita una stima del numero di modifiche ai dati di cui è possibile eseguire il rollforward nel periodo di recupero specificato. Quando il numero di modifiche ai dati apportate nel database dopo l'ultimo checkpoint corrisponde al numero di modifiche stimato, in SQL Server viene in genere creato un checkpoint in un database. In alcuni casi il checkpoint viene creato quando il log raggiunge il 70% della capacità, se questo valore è inferiore al numero di modifiche stimato.

La frequenza dei checkpoint in un database non è basata sul tempo, bensì sulla quantità di modifiche apportate. In un database utilizzato principalmente per operazioni in sola lettura i checkpoint non saranno numerosi. Al contrario, in un database utilizzato per le transazioni i checkpoint saranno frequenti.

Mantenere il valore di recovery interval su 0 (configurazione automatica), a meno che non si noti una frequenza di checkpoint troppo elevata che comporta un peggioramento delle prestazioni del sistema. In questo caso, provare ad aumentare il valore con incrementi minimi.

recovery interval è un'opzione avanzata. Se per modificare l'impostazione di recovery interval si utilizza la stored procedure di sistema sp_configure, il valore dell'opzione potrà essere modificato solo quando show advanced options è impostata su 1. L'impostazione diventa effettiva senza dover riavviare il server.

Per impostare l'opzione recovery interval su un valore maggiore di 60 (minuti), è necessario eseguire l'istruzione RECONFIGURE WITH OVERRIDE.