Ho un grande database (nelle decine di milioni di record) su cui eseguirò un backup completo del database .
Tuttavia, il database è abbastanza grande da consentire l'avvio delle transazioni prima e durante, nonché il commit durante e dopo il backup.
Per esempio:
T0 = Transaction A start
T1 = Full database backup start
T2 = Transaction B start (will not deadlock with A)
T3 = Transaction A commit/rollback (does not matter, does it?)
T4 = Full database backup end
T5 = Transaction B commit/rollback (again, does not matter, does it?)
T0 T1 T2 T3 T4 T6
||----------||----------||----------||----------||----------||---------->
La mia comprensione è che non vengono utilizzati blocchi durante un backup (anche se potrebbero verificarsi altri problemi di prestazioni a causa di I / O elevati) , ma non sono sicuro di cosa posso garantire ciò che verrà commesso o meno.
Inoltre, la mia preoccupazione non è che il database si troverà in uno stato incoerente, ma piuttosto quale sarà tale stato (anche se non è deterministico, se esiste un insieme di regole che possono essere applicate in modo coerente) e come è arrivato lì ( ad esempio, quanto del file di dati viene utilizzato insieme al registro delle transazioni per creare un file di backup)?