Transactielogboek - Transaction log
Op het gebied van databases in de informatica is een transactielogboek (ook transactielogboek , databaselogboek , binair logboek of audit-trail ) een geschiedenis van acties die zijn uitgevoerd door een databasebeheersysteem dat wordt gebruikt om ACID- eigenschappen te garanderen bij crashes of hardwarestoringen. Fysiek is een logboek een bestand met wijzigingen in de database, opgeslagen in een stabiel opslagformaat.
Als de database na een start in een inconsistente staat wordt aangetroffen of niet correct is afgesloten, beoordeelt het databasebeheersysteem de databaselogboeken op niet-gecommitteerde transacties en worden de door deze transacties aangebrachte wijzigingen ongedaan gemaakt . Bovendien worden alle transacties die al zijn vastgelegd, maar waarvan de wijzigingen nog niet in de database zijn doorgevoerd, opnieuw toegepast. Beide zijn gedaan om atomiciteit en duurzaamheid van transacties te garanderen .
Deze term moet niet worden verward met andere, door mensen leesbare logboeken die gewoonlijk in een databasebeheersysteem worden geleverd.
In databasebeheersystemen is een journaal de record van gegevens die door een bepaald proces zijn gewijzigd.
Anatomie van een algemeen databaselogboek
Een databaselogboekrecord bestaat uit:
- Log Sequence Number (LSN): een unieke ID voor een logboekrecord. Met LSN's kunnen logboeken in constante tijd worden hersteld. De meeste LSN's zijn toegewezen in monotoon oplopende volgorde, wat handig is bij het herstel algoritmen , zoals RAM .
- Prev LSN : een link naar hun laatste logboekrecord. Dit houdt in dat databaselogboeken worden opgebouwd in de vorm van een gekoppelde lijst .
- Transactie-ID-nummer : een verwijzing naar de databasetransactie die het logboekrecord genereert.
- Type : beschrijft het type databaselogboekrecord.
- Informatie over de feitelijke wijzigingen die ertoe hebben geleid dat het logboekrecord is geschreven.
Typen databaselogboekrecords
Alle logboekrecords bevatten de algemene logboekattributen hierboven, en ook andere attributen, afhankelijk van hun type (dat is vastgelegd in het Type- attribuut, zoals hierboven).
-
Update Log Record noteert een update (wijziging) in de database. Het bevat deze extra informatie:
- PageID : Een verwijzing naar de pagina-ID van de gewijzigde pagina.
- Lengte en offset : lengte in bytes en offset van de pagina zijn meestal inbegrepen.
- Voor en na afbeeldingen : bevat de waarde van de bytes van de pagina voor en na de paginawijziging. Sommige databases hebben mogelijk logboeken die een of beide afbeeldingen bevatten.
-
Compensation Log Record (CLR) noteert het terugdraaien van een bepaalde wijziging in de database. Elk komt overeen met precies één ander updatelogboekrecord (hoewel het overeenkomstige updatelogboek doorgaans niet wordt opgeslagen in het compensatielogboekrecord). Het bevat deze extra informatie:
- undoNextLSN : dit veld bevat het LSN van het volgende logboekrecord dat ongedaan moet worden gemaakt voor de transactie die het laatste updatelogboek heeft geschreven.
- Commit Record noteert een beslissing om een transactie vast te leggen.
- Abort Record noteert een beslissing om een transactie af te breken en dus terug te draaien.
-
Checkpoint Record merkt op dat er een checkpoint is gemaakt. Deze worden gebruikt om het herstel te versnellen. Ze leggen informatie vast waardoor u niet ver in het verleden van het logboek hoeft te lezen. Dit varieert afhankelijk van het controlepuntalgoritme. Als alle vuile pagina's worden doorgespoeld tijdens het maken van het controlepunt (zoals in PostgreSQL ), kan dit het volgende bevatten:
- redoLSN : Dit is een verwijzing naar het eerste logboekrecord dat overeenkomt met een vuile pagina. dwz de eerste update die niet werd doorgespoeld op het moment van het controlepunt. Dit is waar opnieuw moet beginnen bij herstel.
- undoLSN : dit is een verwijzing naar het oudste logboekrecord van de oudste lopende transactie. Dit is het oudste logboekrecord dat nodig is om alle lopende transacties ongedaan te maken.
- Completion Record merkt op dat al het werk is gedaan voor deze specifieke transactie. (Het is volledig vastgelegd of afgebroken)
Zie ook
- Gegevens bijhouden
- Foutcorrectie en detectie
- Hash-functie
- Journaling-bestandssysteem
- Log-gestructureerd bestandssysteem
- Schrijf vooruit loggen
- Log opnieuw