Abbinamento e miscelazione
Il backup del registro delle transazioni non equivale al troncamento del file di registro delle transazioni e il troncamento del file di registro delle transazioni non equivale alla riduzione del file di registro delle transazioni. Oh sì, e il backup del file di registro delle transazioni non deve innescare un troncamento. A seconda del carico corrente, il motore di database potrebbe decidere di impostare un checkpoint, ma di attendere un po 'con il troncamento.
spiegando
Il file di registro delle transazioni è il punto in cui il motore di database memorizza le modifiche apportate ai dati in un database, indipendentemente dal fatto che il database si trovi nel modello di recupero SEMPLICE o nel modello di recupero COMPLETO. (Importante)
Ora il file di registro delle transazioni del database non è solo un contenitore di archiviazione continua, ma una raccolta di file di registro virtuali (VLF) che vengono creati in un ordine sequenziale all'interno del file di registro delle transazioni (TLog). La dimensione dei VLF varia a seconda della versione di SQL Server attualmente in uso e anche della dimensione iniziale selezionata durante la creazione del file TLog e anche della dimensione selezionata (se presente) per l'impostazione di crescita automatica del File TLog.
Riferimenti:
- Importante modifica dell'algoritmo di creazione VLF in SQL Server 2014 (SQLSkills.com)
- Numeri di sequenza VLF iniziali e dimensioni del file di registro predefinito (SQLSkills.com)
- All'interno del motore di archiviazione: ulteriori informazioni sulla natura circolare del registro
(SQLSkills. com)
... e forse nell'ordine inverso
Quando i dati vengono modificati nel database, il Motore di database scriverà queste modifiche nel TLog del database corrispondente per mantenere la coerenza transazionale. Questo è anche noto come ACID: atomicità, coerenza, isolamento, durata . Le effettive transazioni di queste modifiche sono memorizzate nei VLF del TLog (file). Quando un VLF è pieno, le transazioni più recenti verranno archiviate nel prossimo VLF disponibile in ordine sequenziale.
eccezioni
Tuttavia, se viene raggiunta la fine del file TLog, le modifiche verranno archiviate nel primo VLF all'inizio del file TLog. (spiegato in Inside the Storage Engine: ulteriori informazioni sulla natura circolare del registro )
Quando nessun VLF disponibile è libero di memorizzare nuove transazioni e se è configurata l'impostazione di crescita automatica, il Motore di database aumenterà il file TLog in base all'importo definito e creerà VLF aggiuntivi in base alla dimensione definita nelle impostazioni di crescita automatica e alla formula spiegato in Importante modifica dell'algoritmo di creazione VLF in SQL Server 2014 . Ulteriori transazioni possono quindi essere archiviate nel VLF successivo all'interno del file TLog.
Backup del file TLog
Quando si attiva un backup del file TLog, tutto ciò che si sta facendo è dire al motore di database di farlo
- dai un'occhiata al file TLog
- determinare quando si è verificato l'ultimo backup del log delle transazioni (LSN: Log Sequence Number; per ulteriori ricerche)
- imposta un Checkpoint nel file TLog ( Database Checkpoint (SQL Server) )
- archiviare una copia di backup del file TLog su disco / nastro tenendo traccia del precedente LSN e dell'ultimo LSN sottoposto a commit appena prima del completamento del backup
- trasferire tutte le modifiche al "database"
- contrassegnare i VLF come riutilizzabili
Finora non è stato rilasciato spazio all'interno del file TLog per il motore del database da riutilizzare ...
Troncamento automatico del file TLog
... ma se il Motore di database ha alcuni cicli da risparmiare e non è sottoposto a forti pressioni, a volte darà un'occhiata al file TLog, noterà il Checkpoint e rilascerà i VLF per il riutilizzo. Lo spazio all'interno del file TLog è ancora utilizzato dai VLF (stessa dimensione, stessa posizione) ma sono liberi di essere riutilizzati.
Questo è documentato nel Troncamento del registro delle transazioni :
Tranne quando ritardato per qualche motivo, il troncamento del registro si verifica automaticamente come segue: - Sotto il modello di recupero semplice, dopo un checkpoint.
- Sotto il modello di recupero completo o il modello di recupero registrato in blocco, dopo un backup del registro, se si è verificato un checkpoint dal backup precedente. Per ulteriori informazioni, consultare "Troncamento del registro nei modelli di recupero completo e con registrazione di massa" più avanti in questo argomento.
Ci sono alcuni casi in cui ciò non accade:
Sebbene automatico, il troncamento del registro può essere ritardato da una varietà di fattori. Per informazioni su ciò che può ritardare il troncamento del registro, vedere Fattori che possono ritardare il troncamento del registro .
Visualizzazione del troncamento del registro
Il troncamento del registro può essere osservato quando si esegue una query sulla dimensione TLog utilizzando le istruzioni SQL o il report Spazio database nell'interfaccia utente di SSMS. È possibile osservare che lo spazio utilizzato all'interno del file TLog potrebbe essere solo l'1% della dimensione del file TLog disponibile.
Ridurre o non ridurre
La raccomandazione generale non è quella di ridurre il file TLog, perché è cresciuto per un certo motivo e probabilmente tornerà alle dimensioni di una volta. Ma questa è una storia per un altro post. Ci sono alcuni buoni motivi, uno dei quali è quando si ricrea la dimensione dei VLF all'interno del file TLog.
Rispondere alle tue domande
In linea proprio sotto i tuoi presupposti e domande
La mia comprensione era che il backup di un database:
- Tronca il registro delle transazioni e
Questa è un'ipotesi sbagliata. Il backup del database (FULL, DIFFERENTIAL) non fa nulla con i file TLog. Un backup COMPLETO creerà uno stato coerente del database insieme alle transazioni impegnate dal file TLog. Un backup DIFF creerà uno stato coerente di tutti i precedenti backup TLog dall'ultimo backup COMPLETO del database.
Tuttavia, un backup TLOG creerà un backup delle transazioni impegnate dal file TLog, impostando un checkpoint e possibilmente (quando non sotto carico pesante) rilasciando i VLF per il riutilizzo.
No, quando si considerano i backup FULL e DIFF. No, se si considerano i backup TLOG, ma si libereranno i VLF all'interno del file TLog, se il motore di database ha del tempo libero.
Cosa fanno effettivamente i tronchi di troncamento nel file di registro (LDF)? Questo processo dovrebbe impedire che i dischi si riempiano.
Il troncamento dei registri consente di riutilizzare i VLF. È tutto.
Questo processo può avere il vantaggio di impedire la crescita del file TLog se sono state impostate le impostazioni di crescita automatica.
Se non sono state impostate impostazioni di crescita automatica , poiché il processo di progettazione dei requisiti ha determinato che il file TLog avrebbe una dimensione fissa, il caso peggiore è che TLog si riempia perché non si verifica alcun backup TLog e quindi non vengono liberati VLF. Il TLog non può crescere e i VLF non vengono liberati per consentire la scrittura di ulteriori transazioni nel file TLog (o VLF internamente).