Maison  >  Questions et réponses  >  le corps du texte

optimisation mysql - verrouillage de la table mysql innodb, demandez des réponses à l'expert DBA

Questions :
1. Lorsque les transactions ne sont pas activées dans innodb et autocommit=1, la mise à jour et la suppression provoquent-elles des verrouillages de table ?

J'ai ouvert deux sessions MySQL dans le terminal et la table t contient un total de 3,5 millions de lignes de données

Exécuté seul :

 会话1:update t set status=1 where id>1; 16.*秒
 会话2:update t set status=1 where id<3500000; 12.*秒

Exécuté simultanément, d'après ce que j'ai compris :

**在我看来,这两条sql,同时执行,同时操作同一条记录的情况,只有一次**
**在innodb中update和delete都会隐式添加排它锁,那么就是说这两条sql同时执行,只会阻塞很短的时间,毕竟只有同时操作同一条记录的情况下,才会阻塞**

Exécuté simultanément, résultats des tests :

两条sql,间隔执行时间,在半秒左右.
会话1先执行:update t set status=1 where id>1;16.*秒,没有变化 
会话2后执行:update t set status=1 where id<3500000; 28.* = 12.*秒+16.*秒


会话2先执行:update t set status=1 where id>1;12.*秒,没有变化 
会话1后执行:update t set status=1 where id<3500000; 28.* = 16.*秒+12.*秒

Se pourrait-il que lorsque deux SQL opèrent sur le même enregistrement en même temps, la table soit verrouillée ? Je crois comprendre que cela ne bloquera que pendant une courte période. Après tout, le même enregistrement ne peut être utilisé qu'une seule fois en même temps. C'est comme deux personnes, a comptant de 1 à 10 et b comptant de 10. à 1, qu'ils soient à la même vitesse ou que ce ne soit pas la même vitesse, on ne peut compter le même nombre qu'une fois à la fois

PHP中文网PHP中文网2705 Il y a quelques jours718

répondre à tous(1)je répondrai

  • 仅有的幸福

    仅有的幸福2017-05-25 15:10:06

    Un SQL est une transaction, ce qui ne signifie pas que l'exploitation d'enregistrements 1W signifie que les transactions 1W sql1 verrouillent tous les enregistrements >1, et sql2 attendra que sql1 libère le verrou

    .

    répondre
    0
  • Annulerrépondre