Besides being able to do multiple queries and rollback if one of them fails, are there any others?
Это один из них.Вероятно, главное преимущество заключается в том, что вы можете быть уверены, что никогда не оставите базу данных в несогласованном состоянии, а другой пользователь не получит доступ к базе данных в то же время, когда вы увидите противоречивые данные.Например, если вы управляли банком и хотели, чтобы клиенты могли переводить деньги на счета друг друга, вам не нужно, чтобы на снимке данных были какие-либо недостающие деньги или лишние деньги.Таким образом, если один клиент переводит 100 долларов другу, это обычно работает следующим образом:
- 100 долларов покидает счет первого клиента
- 100 долларов поступает на счет друга
Без транзакций, если вы рассматривали две учетные записи в неподходящее время, вы можете увидеть их обе без 100 долларов и сделать вывод, что ваши обязательства были на 100 долларов меньше или что-то в этом роде.В случае транзакций вы видите учетные записи, как до транзакции, или учетные записи как впоследствии - без противоречий.
And are they slower than the normal queries?
Насколько мне известно, транзакции не налагают какого-либо существенного снижения производительности.