Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kiedy powinienem używać transakcji MySQL?

Transakcje są używane, gdy masz grupę zapytań, które są od siebie zależne.

Na przykład bank:

  • Klient banku „Jan” przelewa 100 USD na konto „Alice”.
  • W tym przykładzie są 2 zapytania (nie pokazuję historii rejestrowania ani transakcji...itd.). Musisz odjąć 100 USD od salda Johna i dodać to do salda Alicji.
  • Start transaction
  • Odlicz od Jana
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Dodaj do Alicji
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

Transakcja nie zostanie zapisana, dopóki jej nie zatwierdzisz. Więc jeśli wystąpił błąd w którymkolwiek zapytaniu, możesz wywołać rollback i cofnij wszystkie zapytania, które zostały uruchomione od momentu rozpoczęcia transakcji. Jeśli z jakiegoś powodu zapytanie o dodanie 100 USD do Alicji nie powiodło się, możesz wycofać i nie odejmować 100 USD od Jana. Jest to sposób na zapewnienie, że w razie potrzeby możesz automatycznie cofnąć zapytania.

  • Czy powinienem rozpocząć transakcję, gdy wykonuję dwa lub więcej zapytań usuwania/aktualizacji/wstawiania?

    Zależy od tego, co robią zapytania.

  • Czy powinienem również rozpocząć transakcję, gdy mam tylko jedno zapytanie dotyczące usunięcia/aktualizacji/wstawienia?

    Nie jest to konieczne, chyba że potrzebujesz sposobu na wycofanie (cofnięcie) zapytania, tak jak chcesz dokonać aktualizacji i zweryfikować je przed wywołaniem zatwierdzenia (zapisania).

  • Czy powinienem rozpocząć transakcję np. 10 razy na stronie, czy lepiej tylko raz dla całej strony, czy też zalecacie maksimum dla każdej strony (na przykład 5)?

    Rozpocznij tyle, ile potrzebujesz. Wątpię, czy masz wiele transakcji na stronie, ponieważ najprawdopodobniej robiłbyś jedną rzecz przy każdym wczytaniu strony (tj. przelewanie pieniędzy).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pusty ciąg wstawiający zero, a nie null

  2. MYSQL Data Godzina Od zaokrąglenia do najbliższej godziny

  3. Czy mogę uruchomić wyzwalacz na instrukcji select w mysql?

  4. rake db:create generowane, jeśli ustawisz zestaw znaków ręcznie, upewnij się, że masz pasujący błąd sortowania

  5. usuń wiersz za pomocą funkcji ajax i php