Permettez-moi de passer en revue vos cas et de vous expliquer le fonctionnement de ces verrous :
1 cas
T1 souhaite mettre à jour certaines lignes de votre table de test. Cette transaction place un verrou IX sur toutes les tables et un verrou X sur les 5 premières lignes.
T2 souhaite mettre à jour certaines lignes de votre table de test. Cette transaction verrouille IX (parce que IX compatible avec IX) sur toutes les tables et essaie les 5 premières lignes mais elle ne peut pas le faire car X n'est pas compatible avec X
Donc nous allons bien.
Cas 2.1
T1 souhaite mettre à jour certaines lignes de votre table de test. Cette transaction a mis un verrou IX sur toutes les tables et un verrou X sur les 5 premières lignes.
T2 souhaite sélectionner certaines lignes de votre table de test. Et il ne place aucun verrou (car InnoDB fournit des lectures non verrouillables)
Cas 2.1
T1 souhaite mettre à jour certaines lignes de votre table de test. Cette transaction a mis un verrou IX sur toutes les tables et un verrou X sur les 5 premières lignes.
T2 souhaite mettre à jour (sélectionner pour mise à jour) certaines lignes de votre table de test. Placez IS sur toute la table et essayez d'obtenir un verrou S sur la ligne et échouez car X et S ne sont pas compatibles.
Soyez également toujours conscient du niveau d'isolement :un niveau différent entraîne un mécanisme différent pour libérer/acquérir des verrous
J'espère que ça aide