Lexique informatique › Bases de données › Verrou d'intervalle

Verrou d'intervalle Gap lock

Bases de données Svenska → Mis à jour: 2026-09-22

Un mécanisme de verrouillage de MySQL/InnoDB qui verrouille l'« intervalle » entre des valeurs d'index — pas seulement les lignes existantes, mais la plage où de nouvelles lignes pourraient être insérées. Il empêche les lectures fantômes sous Repeatable Read en bloquant les insertions dans une plage verrouillée.

Le problème qu'il résout : sans verrou d'intervalle, une autre transaction pourrait insérer une nouvelle ligne au milieu d'une plage que vous venez de lire, un « fantôme » apparaîtrait et Repeatable Read serait rompu. Le « next-key lock » d'InnoDB = verrou de ligne + verrou d'intervalle combinés : il verrouille à la fois la ligne et l'intervalle qui la précède. Mécanique : SELECT ... WHERE x BETWEEN 10 AND 20 FOR UPDATE verrouille aussi les intervalles, de sorte qu'aucune ligne dont x est dans la plage ne peut être ajoutée.

Le revers : il protège des fantômes mais peut provoquer des interblocages inattendus et bloquer des insertions apparemment sans rapport — source fréquente de conflits de verrous mystérieux dans InnoDB. Les verrous d'intervalle disparaissent sous Read Committed (une raison d'abaisser l'isolation pour certaines charges). Un comportement propre à InnoDB qui surprend souvent les développeurs.

← Retour au lexique