sql >> Databasteknik >  >> RDS >> Mysql

När ska jag använda MySQL-transaktioner?

Transaktioner används när du har en grupp av frågor som alla är beroende av varandra.

Till exempel en bank:

  • Bankkunden "John" överför $100 till kontot för "Alice".
  • För det här exemplet finns det två frågor (jag visar inte loggning eller transaktionshistorik... etc). Du måste dra av $100 från Johns saldo och lägga till det till Alices saldo.
  • Start transaction
  • Skaffa från John
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Lägg till i Alice
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

En transaktion sparas inte förrän du genomför den. Så om det fanns ett fel i någon av sökfrågorna kan du anropa rollback och ångra alla frågor som har körts sedan transaktionen startade. Om frågan om att lägga till $100 till Alice av någon anledning misslyckades, kunde du återställa och inte dra av $100 från John. Det är ett sätt att säkerställa att du kan ångra frågor automatiskt om det behövs.

  • Ska jag starta en transaktion när jag kör två eller flera raderings-/uppdaterings-/infoga-frågor?

    Beroende på vad frågorna gör.

  • Ska jag också starta en transaktion när jag bara har en radera/uppdatering/infoga fråga?

    Inte nödvändigt om du inte behövde ett sätt att återställa (ångra) frågan som att du vill göra en uppdatering och validera den innan du anropar commit (spara).

  • Ska jag starta en transaktion typ 10 gånger på en sida, eller bättre bara en gång för hela sidan, eller rekommenderar du ett max för varje sida (till exempel 5)?

    Starta så många du behöver. Jag tvivlar på att du har flera transaktioner per sida eftersom du med största sannolikhet skulle göra en sak vid varje sidladdning (dvs. överföra pengar).



  1. Analysera parameterns standardvärden med PowerShell – Del 3

  2. Använd tnsnames.ora i Oracle SQL Developer

  3. MySQL-prestanda:MySQL/MariaDB-index

  4. Fixar Lås väntetid har överskridits; prova att starta om transaktionen för en Mysql-tabell som har fastnat?