IT-lexicon › Databases › Gap lock

Gap lock

Databases Svenska → Bijgewerkt: 2026-10-03

Een lockmechanisme in MySQL/InnoDB dat de ‘kloof’ tussen indexwaarden vergrendelt: niet alleen bestaande rijen, maar ook het bereik waarin nieuwe rijen kunnen komen. Het voorkomt phantom reads onder Repeatable Read door inserts in een vergrendeld bereik te blokkeren.

Het probleem dat het oplost: zonder gap locks kan een andere transactie een nieuwe rij midden in een net gelezen bereik invoegen, waardoor een ‘phantom’ verschijnt en Repeatable Read doorbroken wordt. De ‘next-key lock’ van InnoDB is een rijlock en gap lock in één: zowel de rij als de kloof ervoor wordt vergrendeld. Werking: SELECT ... WHERE x BETWEEN 10 AND 20 FOR UPDATE vergrendelt ook de kloven, zodat er geen nieuwe rijen met x in het bereik bij kunnen. Afweging: bescherming tegen phantoms, maar mogelijk onverwachte deadlocks en geblokkeerde inserts die ogenschijnlijk niets met elkaar te maken hebben, een vaak voorkomende oorzaak van mysterieuze InnoDB-lockconflicten. Onder Read Committed verdwijnen gap locks (een reden om het isolatieniveau voor bepaalde workloads te verlagen). Specifiek InnoDB-gedrag dat ontwikkelaars geregeld verrast.

← Terug naar het lexicon