Mysql
 sql >> база данни >  >> RDS >> Mysql

Кога трябва да използвам MySQL транзакции?

Транзакциите се използват, когато имате група заявки, които всички зависят една от друга.

Например банка:

  • Банковият клиент „Джон“ превежда $100 по сметката на „Алиса“.
  • За този пример има 2 заявки (не показвам регистрация или история на транзакциите... и т.н.). Трябва да извадите $100 от баланса на Джон и да добавите това към баланса на Алис.
  • Start transaction
  • Приспадане от Джон
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Добавяне към Alice
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

Транзакцията не се запазва, докато не я извършите. Така че, ако има грешка в която и да е заявка, можете да извикате rollback и отменете всички заявки, които са се изпълнявали след стартирането на транзакцията. Ако по някаква причина заявката за добавяне на $100 към Alice не успее, можете да върнете назад и да не приспаднете $100 от Джон. Това е начин да се гарантира, че можете да отмените заявките автоматично, ако е необходимо.

  • Трябва ли да започна транзакция, когато изпълня две или повече заявки за изтриване/актуализиране/вмъкване?

    Зависи от това какво правят заявките.

  • Трябва ли също да започна транзакция, когато имам само една заявка за изтриване/актуализация/вмъкване?

    Не е необходимо, освен ако не ви е необходим начин за връщане назад (отмяна) на заявката, както искате да направите актуализация и да я потвърдите, преди да извикате commit (save).

  • Трябва ли да започна транзакция като 10 пъти на страница, или по-добре само веднъж за цялата страница, или препоръчвате максимум за всяка страница (например 5)?

    Започнете толкова, колкото са ви необходими. Съмнявам се, че имате няколко транзакции на страница, тъй като най-вероятно ще правите едно нещо при всяко зареждане на страница (т.е. прехвърляте пари).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL заявка с двоични данни (PHP и MySQL)

  2. Свързване на MySQL от JSP

  3. MySQL транзакция:SELECT + INSERT

  4. MySQL FULLTEXT не работи

  5. Вземете последния ред за даден идентификатор