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

Quand dois-je utiliser les transactions MySQL ?

Les transactions sont utilisées lorsque vous avez un groupe de requêtes qui dépendent toutes les unes des autres.

Par exemple, une banque :

  • Le client de la banque "John" transfère 100 USD sur le compte d'"Alice".
  • Pour cet exemple, il y a 2 requêtes (je n'affiche pas la journalisation ni l'historique des transactions, etc.). Vous devez déduire 100 $ du solde de John et l'ajouter au solde d'Alice.
  • Start transaction
  • Déduire de John
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Ajouter à Alice
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

Une transaction n'est pas enregistrée tant que vous ne l'avez pas validée. Donc, s'il y avait une erreur dans l'une ou l'autre des requêtes, vous pouvez appeler rollback et annulez toutes les requêtes exécutées depuis le démarrage de la transaction. Si, pour une raison quelconque, la requête pour ajouter 100 $ à Alice échoue, vous pouvez revenir en arrière et ne pas déduire 100 $ de John. C'est un moyen de s'assurer que vous pouvez annuler automatiquement les requêtes si nécessaire.

  • Dois-je démarrer une transaction lorsque j'exécute deux ou plusieurs requêtes de suppression/mise à jour/insertion ?

    Dépend de ce que font les requêtes.

  • Dois-je également démarrer une transaction lorsque je n'ai qu'une seule requête de suppression/mise à jour/insertion ?

    Pas nécessaire sauf si vous aviez besoin d'un moyen d'annuler (annuler) la requête comme si vous vouliez faire une mise à jour et la valider avant d'appeler commit (save).

  • Dois-je commencer une transaction comme 10 fois sur une page, ou mieux une seule fois pour toute la page, ou recommandez-vous un maximum pour chaque page (par exemple 5) ?

    Démarrez autant que vous le souhaitez. Je douterais que vous ayez plusieurs transactions par page, car vous feriez très probablement une chose à chaque chargement de page (c'est-à-dire transférer de l'argent).