在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();
}
我的猜测是,如果对代码中的每个查询执行此操作,都会严重降低性能
tl; dr 您可以在每个查询中使用交易吗?或者,您是否应该在对数据库执行大型操作时使用它们?
答案 0 :(得分:1)
如果您想进行所有更改或者不进行任何更改,您肯定需要使用交易。例如,如果您将钱从一个人转移到另一个人,您应该增加一个人的余额并减少另一个人的余额。
如果您有许多简单的查询并且需要性能,那么使用事务是很好的。它取决于数据库,但通常数据库尝试在事务期间在内存中进行所有更改,然后才刷新到磁盘。内存比磁盘快得多。
但是,只有你有高负荷网站或者你需要插入1000个记录并且每个100毫秒是重要的。如果您的查询少于100个,它们很简单,如果执行其中一半然后脚本中断(服务器重启,PHP超时等)并且您的数据仍然一致,则没有任何错误 - 您可能不会使用事务。
如果您认为如果不明确启动它们就不使用交易,那么您可能错了。它取决于数据库,但它可以自动启动每个查询的事务 https://stackoverflow.com/a/2950764/437763