Optimistisch of pessimistisch vergrendelen: welke moet een boeking of afrekenen gebruiken?
Share

In this article
Gebruik pessimistische vergrendeling wanneer veel gebruikers strijden om dezelfde rij, zoals de laatste tickets van een evenement. Gebruik optimistische vergrendeling, een versievak, wanneer concurrentie zeldzaam is, zoals bij boekingen of winkelwagens verspreid over veel slots en producten. Kies op basis van hoe vaak twee schrijvers realistisch dezelfde rij raken.
Wat is het verschil tussen optimistische en pessimistische vergrendeling?
Pessimistische vergrendeling blokkeert andere schrijvers terwijl één transactie een rij vasthoudt, waardoor conflicten moeten wachten. Optimistische vergrendeling laat iedereen doorgaan, maar wijst een schrijfactie af als een versievak ondertussen is veranderd, waardoor conflicten opnieuw geprobeerd worden. De eerste ruilt latentie in voor zekerheid; de tweede ruilt af en toe opnieuw proberen in voor geen wachttijd.
Wanneer is optimistische vergrendeling de betere keuze?
Optimistische vergrendeling wint wanneer schrijfacties kort zijn en botsingen zeldzaam. Bij Trexind's boekingsslots betekent een versievak dat de schrijfactie die een race verliest een conflict krijgt, geen stille overschrijving, en opnieuw probeert tegen de huidige slotstatus. Het vasthouden van een lock over de hele aanvraag zou meer kosten dan het oplevert.
Wanneer is pessimistische vergrendeling de betere keuze?
Pessimistische vergrendeling wint bij een enkele populaire rij waar veel kopers tegelijk om strijden, zoals de laatste tickets van een populair evenement. Daar zorgen optimistische herhalingen voor veel gedoe en dwingen elke verliezer om de hele checkout opnieuw te doen. Een korte lock laat de tweede koper milliseconden wachten en dan zien dat het uitverkocht is.
Hoe beslis je voor je eigen systeem?
Vraag hoe vaak twee schrijvers dezelfde rij raken en wat een verloren race de gebruiker kost. Zeldzame botsingen en goedkope herhalingen wijzen op optimistisch. Frequente botsingen op één rij, of herhalingen die dure werkzaamheden opnieuw doen, wijzen op pessimistisch. Meet de concurrentie voordat je beslist; dezelfde app kan beide gebruiken.
Veel rijen, weinig botsingen per rij: optimistisch (voorraad over honderden SKU's)
Één rij, veel gelijktijdige schrijvers: pessimistisch (laatste tickets van een evenement)
Schrijven gebeurt één keer per entiteit: een korte lock is prima (exameninzending)
In één oogopslag
Laatste tickets van één evenement (FindYourVibe) · Hoog: een piek op één rij · Pessimistische rijlock · De verliezer wacht milliseconden in plaats van de hele checkout opnieuw te proberen
Afspraken- en tafelslots (Trexind) · Laag: korte schrijfacties, zelden betwist · Optimistisch versievak · Een lock over de hele aanvraag is de latentie niet waard
Voorraad over veel SKU's (Skyxis) · Laag: winkelwagens raken zelden dezelfde rij · Optimistisch versievak · Een lock voor het checkout-venster kost meer dan de zeldzame herhaling
Examenpoging indienen (PS Classes) · Eén keer per poging · Redis-lock op poging-ID · Een inzending gebeurt één keer, dus een paar milliseconden lock is goedkoper dan een corrupte ranglijst
Oorspronkelijk gepubliceerd op sakshamjain.codes/blog/optimistic-vs-pessimistic-locking. Dit laten bouwen? Bekijk mijn diensten op NexoRush of stuur een bericht.