В PHP вы можете запускать транзакции при выполнении запросов. Но когда должен вы используете его? Разве плохо использовать эту функцию с каждым запросом? Или вы должны использовать этот запрос только при добавлении / удалении / обновлении больших объемов данных?
Пример транзакции:
try {
$db->beginTransaction();
$db->exec("some query");
$stmt = $db->prepare("another query");
$stmt->execute(array($value));
$stmt = $db->prepare("another query again??");
$stmt->execute(array($value2, $value3));
$db->commit();
} catch(PDOException $ex) {
//Something went wrong rollback!
$db->rollBack();
echo $ex->getMessage();
}
Я предполагаю, что это сильно снизит производительность, если вы будете делать это с каждым запросом в вашем коде
ТЛ; др Можете ли вы использовать транзакции с каждым запросом? Или вы должны использовать их только при выполнении больших манипуляций с базой данных?
Вам определенно нужно использовать транзакции, если вы хотите внести все изменения или нет. Например, если вы переводите деньги от одного человека к другому, вы должны увеличить свой баланс и уменьшить баланс другого.
Хорошо использовать транзакции, если у вас много простых запросов и вам нужна производительность. Это зависит от базы данных, но часто базы данных пытаются вносить все изменения в память во время транзакции и только потом записывать на диск. Память намного быстрее чем диски.
Но это имеет значение только в том случае, если у вас высоконагруженный сайт или вам нужно вставить 1000 записей, и каждые 100 мс важны. Если у вас меньше 100 запросов, они просты, и в этом нет ничего плохого, если вы выполните половину из них, а затем перестанете работать сценарии (перезапуск сервера, тайм-аут PHP, …) и ваши данные по-прежнему непротиворечивы — вы не можете использовать транзакции.
Если вы считаете, что не используете транзакции, если не запускаете их явно, вы можете ошибаться. Это зависит от базы данных, но может автоматически запускать транзакцию с каждым запросом.
https://stackoverflow.com/a/2950764/437763
Других решений пока нет …