Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL INSERT und SELECT Rangfolge

Hängt davon ab, ob Ihre users Tabelle ist MyISAM oder InnoDB.

Wenn es MyISAM ist, sperrt die eine oder andere Anweisung die Tabelle, und es gibt wenig, was Sie tun können, um das zu kontrollieren, außer Sperren von Tabellen selbst.

Wenn es sich um InnoDB handelt, ist es transaktionsbasiert. Die Multi-Versioning-Architektur ermöglicht gleichzeitigen Zugriff auf die Tabelle und den SELECT sieht die Anzahl der Zeilen ab dem Zeitpunkt, an dem die Transaktion gestartet wurde. Wenn es ein INSERT gibt gleichzeitig das SELECT werden 0 Zeilen angezeigt. Tatsächlich könnten Sie sogar 0 Zeilen durch ein SELECT sehen einige Sekunden später ausgeführt, wenn die Transaktion für den INSERT hat sich noch nicht verpflichtet.

Es gibt keine Möglichkeit, dass die beiden Transaktionen wirklich gleichzeitig beginnen. Transaktionen haben garantiert eine gewisse Ordnung.