Verrous et signification du mode (lock mode), par Jonathan Lewis

Cet article est la traduction d’un article de Jonathan Lewis publié sur son blog. L’article original en anglais se trouve ici.

Pour une description complète des modes de verrous, vous pouvez lire aussi: Les verrous sur les table, et leurs modes (S/X/RS/RX/SRX)

A propos des verrous (locks) et de leur mode (dans les colonnes LMODE et REQUEST de la vue V$LOCK par exemple), je raisonne souvent avec leur numéro. Et je m’apercois que je n’arrive jamais à retenir la correspondance entre le numéro et le lien, sauf pour le mode 6 = exclusive. Donc j’ai finalement mis ici la table de correspondance pour que je puisse la retrouver facilement.

Numero Nom(s) Opérations sur la table(TM lock)
0 No lock n/a
1 Null lock (NL) n/a
2 Sub-share (SS)
Row-share (RS ou Row-S)
  • select for update (versions < 9.2.0.1)
  • Intégrité référentielle, du côté opposé lors d’un DML (versions ≥ 9.2.0.5)
  • Lock table in row share mode
  • Lock table in share update mode
3 Sub-exclusive(SX)
Row-exclusive(RX ou Row-X)
  • Mise à jour
  • select for update (versions ≥ 9.2.0.1)
  • Lock table in row exclusive mode
  • Intégrité référentielle, du côté opposé lors d’un DML (versions ≥ 11.1 – cf Lock Horror)
4 Share (S)
  • Lock table in share mode
  • Peut apparaître en parallel DML avec ID2=1
  • Symptôme classique du verrouillage d’une foreign key non indexée
5 share sub exclusive (SSX)
share row exclusive (SRX)
  • Lock table in share row exclusive mode
  • symptôme plus rare du verrouillage de la foreign key
6 Exclusive (X)
  • Lock table in exclusive mode

Evidemment, c’st un peu irritant que certains modes de verrous aient 2 noms et 2 abréviations. Et certains documents utilisent un nom avec l’autre abréviation (par exemple pen parlant des row-exclusives, puis de l’abréviation SX). Les fichiers de traces relatifs aux locks on tendance à utiliser SS, SX, and SSX plutôt que RS, RX and SRX.

Laisser un commentaire