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

MySQL INSERT et SELECT Ordre de priorité

Cela dépend si vos users table est MyISAM ou InnoDB.

Si c'est MyISAM, une instruction ou l'autre prend un verrou sur la table, et vous ne pouvez pas faire grand-chose pour contrôler cela, à part tables de verrouillage vous-même.

Si c'est InnoDB, c'est basé sur les transactions. L'architecture multi-versioning permet un accès simultané à la table, et le SELECT verra le nombre de lignes à partir du moment où sa transaction a commencé. S'il y a un INSERT se déroulant simultanément, le SELECT verra 0 lignes. En fait, vous pourriez même voir 0 lignes par un SELECT exécuté quelques secondes plus tard, si la transaction pour le INSERT n'a pas encore commis.

Il n'y a aucun moyen pour les deux transactions de démarrer réellement simultanément. Les transactions sont garanties d'avoir un certain ordre.