Two-phase commit

Betegnelse for det forhold, at en enkelt transaktion, der opdaterer en distribueret database over flere CPU'er, opdaterer alle databaser på én gang. Kravet er således ganske analogt til funktionen af commit på et traditionelt, ikke-distribueret databasesystem.

Hovedprincippet i two-phase commit er følgende: I første fase låses alle de poster, transaktionen skal bruge på de involverede databaser (forberedende commit). Kan dette opfyldes af alle databaser, udfører hver database eller CPU i anden fase sin del af den samlede transaktion (f.eks. beregning og opdatering). Anden fase afsluttes med commit, dvs. at databaserne frigiver de låste poster.

Går transaktionen ned i første fase, ophæves alle låse, og ingen tilstande er ændret. Går transaktionen ned i anden fase, rulles alle transaktioner tilbage, hvorved alle databaser fremstår, som om intet arbejde var udført.

Two-phase commit indgår som et af serviceelementerne i OSI's CCR-princip (Commitment, Concurrency and Recovery), der har til formål at koordinere aktiviteterne mellem flere parter i et net, hvor der stilles store krav til operationernes pålidelighed. Dette gælder f.eks. for banktransaktioner, når en kunde skal overføre beløb mellem forskellige banker.

Forfattere: 
Troels Andreasen
Casper Thomsen
Tine Havkrog Jensen