Mysql
 sql >> Database >  >> RDS >> Mysql

Quando dovrei usare le transazioni MySQL?

Le transazioni vengono utilizzate quando hai un gruppo di query che dipendono tutte l'una dall'altra.

Ad esempio, una banca:

  • Il cliente della banca "John" trasferisce $ 100 sul conto di "Alice".
  • Per questo esempio, ci sono 2 query (non sto mostrando la registrazione o la cronologia delle transazioni... ecc.). Devi detrarre $ 100 dal saldo di John e aggiungerlo al saldo di Alice.
  • Start transaction
  • Detrazione da Giovanni
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Aggiungi ad Alice
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

Una transazione non viene salvata finché non la commetti. Quindi, se si verifica un errore in una delle query, puoi chiamare rollback e annullare tutte le query eseguite dall'avvio della transazione. Se per qualche motivo la query per l'aggiunta di $ 100 ad Alice non è riuscita, è possibile eseguire il rollback e non detrarre $ 100 da John. È un modo per assicurarti di poter annullare automaticamente le query se necessario.

  • Devo avviare una transazione quando eseguo due o più query di eliminazione/aggiornamento/inserimento?

    Dipende da cosa stanno facendo le query.

  • Devo avviare una transazione anche quando ho solo una query di eliminazione/aggiornamento/inserimento?

    Non necessario a meno che tu non abbia bisogno di un modo per eseguire il rollback (annullare) della query come se volessi eseguire un aggiornamento e convalidarla prima di chiamare commit (save).

  • Devo iniziare una transazione tipo 10 volte su una pagina, o meglio una sola volta per l'intera pagina, oppure mi consigliate un massimo per ogni pagina (ad esempio 5)?

    Inizia quanti ne hai bisogno. Dubiterei che tu abbia più transazioni per pagina poiché molto probabilmente faresti una cosa a ogni caricamento della pagina (es. trasferire denaro).