Mysql
 sql >> Base de données >  >> RDS >> Mysql

Performances de verrouillage au niveau des lignes InnoDB - combien de lignes ?

Ce que vous demandez n'est pas tout à fait clair. Le verrouillage garantit qu'un seul utilisateur tente de modifier une ligne donnée à un moment donné. Le verrouillage au niveau de la ligne signifie que seule la ligne qu'ils modifient est verrouillée. Les alternatives habituelles sont soit de verrouiller toute la table pendant la durée de la modification, soit de verrouiller un sous-ensemble de la table. Le verrouillage au niveau des lignes réduit simplement ce sous-ensemble de lignes au plus petit nombre qui garantit toujours l'intégrité.

L'idée est de permettre à un utilisateur de modifier une chose sans empêcher les autres utilisateurs de modifier d'autres choses. Il convient de noter, cependant, que dans certains cas, cela peut être quelque chose d'un faux positif, pour ainsi dire. Quelques bases de données prennent en charge le verrouillage au niveau des lignes, mais rendent un verrou au niveau des lignes considérablement plus coûteux que le verrouillage d'une plus grande partie de la table - suffisamment cher pour qu'il puisse être contre-productif.

Edit :votre modification du message d'origine aide, mais pas vraiment beaucoup. Tout d'abord, la taille des lignes et les niveaux de matériel impliqués ont un effet énorme (l'insertion d'une ligne de 8 octets sur une douzaine de disques durs SAS de 15 000 bandes est juste un peu plus rapide que l'insertion d'une ligne d'un mégaoctet sur un seul disque dur grand public ).

Deuxièmement, il s'agit en grande partie du nombre d'utilisateurs simultanés, de sorte que le modèle d'insertion fait une grande différence. 1000 lignes insérées à 3 heures du matin ne seront probablement pas remarquées du tout. 1000 lignes insérées uniformément tout au long de la journée signifient un peu plus (mais probablement seulement un peu). 1 000 lignes insérées par lot alors que 100 autres utilisateurs ont immédiatement besoin de données peuvent entraîner le licenciement de quelqu'un (surtout si l'un de ces 100 lignes est le propriétaire de l'entreprise).