Wie wir alle wissen, Zeile (Datensatz) Sperre werden in Innodb-Engine unterstützt. Es besteht kein Zweifel, dass der folgende SQL atomare und in einer Transaktion ist.wird Mysql alle Tabelle während der Verarbeitung sperren
update tableA t
set t.oneField = someValue
where t.primaryKey = id
Aber ich bin verwirrt auf die folgende Situation (ohne in dem Zustand)
update tableA t
set t.oneField = someValue
Was ich will, ist fragen, wird die gesamte Tabelle mysql sperren, während diese SQL-Ausführung? Spezifischer, wenn rowA verarbeitet wurde und mysql andere Zeilen verarbeitet, ist rowA noch gesperrt, während diese sql noch verarbeitet? Jedes Werkzeug oder SQL-Befehl könnte verwenden, um zu wissen, ob rowB gesperrt ist oder nicht?
Ich habe doc https://dev.mysql.com/doc/refman/5.5/en/innodb-locking.html gelesen, aber immer noch verwirrt.
Noch mehr, wenn es möglich ist, könnten Sie mir einen bestimmten Fall oder eine Demo oder ein Experiment geben, um Ihre Schlussfolgerung zu illustrieren. Etwas was ich selber machen könnte beides ok.
Vielen Dank.
Was ist mit der Situation, update tableA t gesetzt t.oneField = someValue wo t.primaryKey in (1, 2, ......) – jingb