Supponevo che dopo ogni operazione sull'indice eseguita dal modulo "ALL" del comando, i dati del registro delle transazioni sarebbero stati scaricati prima della ricostruzione dell'indice successivo. Funziona così o le ricostruzioni dell'indice sono registrate come se facessero parte di una singola transazione?
1) Svuotamento del registro: il modello di recupero SEMPLICE non cancella il registro dopo ogni transazione, ma ai punti di controllo. ( link per maggiori informazioni)
2a) REBUILD ALL: sì, REBUILD ALL funziona come un'unica transazione. L'indice ricostruito all'interno ha le proprie transazioni, ma l'operazione complessiva non è completamente impegnata fino alla fine. Quindi sì, potresti limitare la crescita del file di registro ricostruendo i singoli indici (ed eventualmente lanciando i comandi CHECKPOINT).
2b) Prova! Ecco, hai uno script demo. (Costruito nel 2016 sviluppatore) Innanzitutto, imposta un db di prova, con tabella e indici:
USE master
GO
CREATE DATABASE Test_RebuildLog
GO
ALTER DATABASE Test_RebuildLog
SET RECOVERY SIMPLE
GO
USE Test_RebuildLog
GO
CREATE TABLE IndexTest
(ID int identity(1,1),
a char(1),
b char(1))
CREATE CLUSTERED INDEX CIX_IndexTest_ID ON IndexTest(ID)
CREATE INDEX IX_IndexTest_a ON IndexTest(a)
CREATE INDEX IX_IndexTest_b ON IndexTest(b)
INSERT IndexTest
(a,b)
VALUES ('a','b'),('z','y'),('s','r')
Ora puoi confrontare l'attività del registro tra REBUILD ALL e la ricostruzione individualmente
CHECKPOINT
GO
ALTER INDEX ALL ON IndexTest REBUILD
SELECT *
FROM sys.fn_dblog(NULL,NULL)
WHERE Operation = 'LOP_COMMIT_XACT'
OR Operation = 'LOP_BEGIN_XACT'
GO
CHECKPOINT
GO
ALTER INDEX CIX_IndexTest_ID ON IndexTest REBUILD
ALTER INDEX IX_IndexTest_a ON IndexTest REBUILD
ALTER INDEX IX_IndexTest_b ON IndexTest REBUILD
SELECT *
FROM sys.fn_dblog(NULL,NULL)
WHERE Operation = 'LOP_COMMIT_XACT'
OR Operation = 'LOP_BEGIN_XACT'
GO
Nota come la prima transazione aperta (ID transazione 0000: 000002fa per me) non viene impegnata fino alla fine di REBUILD ALL, ma per le ricostruzioni indice per indice, vengono impegnate successivamente.