MySQL simultanéité, comment ça fonctionne et j'en ai besoin pour le manipuler à ma demande
Je suis en train d'exécuter une base de données MySQL. Tous mes tableaux sont à l'aide de la Table de Moteur InnoDB.
Tout le monde qui se connecte dans mon application peut afficher des enregistrements et j'ai peur que à un certain point, deux utilisateurs peuvent mettre à jour ou de l'insertion d'un enregistrement en même temps. N'MySQL gérer ce type de problème de concurrence avec élégance, ou est-ce quelque chose que je vais avoir à programmer dans mon code?
Si je dois le programmer dans mon code, comment allez-vous la manipulation d'une simultanéité des cas comme celui-ci?
- Vous n'avez pas besoin de se soucier de ces. Moderne jour de Bases de données sont assez intelligents dans le contrôle de concurrence 🙂
- c'est ce que je pensais, je voulais juste vérifier
- Hormis l'emballage des requêtes dans les transactions, vous avez seulement besoin de gérer les blocages, qui ne se produisent pas très souvent.
Vous devez vous connecter pour publier un commentaire.
SQL sont atomiques. C'est, si vous effectuez quelque chose comme cela:
Personne ne peut changer le
Sold
variable au cours de la présente déclaration. Il est toujours incrémenté de 1, même si quelqu'un d'autre l'exécution de la même déclaration en même temps.Le problème se produit si vous avez des déclarations qui dépendent les uns des autres:
Entre ces requêtes, un autre utilisateur peut modifier le tableau de Voitures et de mise à jour Vendus. Pour éviter cela, l'envelopper dans une transaction:
Transactions sont prises en charge par InnoDB, mais pas par MyISAM.