【问题标题】:Is it a bad practice to use php transactions with every query?在每个查询中使用 php 事务是一种不好的做法吗?
【发布时间】:2016-09-26 17:03:55
【问题描述】:

在 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 你可以在每个查询中使用事务吗?还是应该只在对数据库执行大型操作时使用它们?

【问题讨论】:

    标签: php performance transactions conventions


    【解决方案1】:

    如果您想进行所有更改或不进行任何更改,您肯定需要使用事务。例如,如果您将钱从一个人转移到另一个人,您应该增加一个人的余额并减少另一个人的余额。

    如果您有许多简单的查询并且需要性能,那么使用事务是很好的。它取决于数据库,但通常数据库尝试在事务期间对内存进行所有更改,然后才刷新到磁盘。内存比磁盘快得多。

    但只有当您有高负载站点或者您需要插入 1000 条记录并且每 100 毫秒很重要时才重要。如果您的查询少于 100 个,它们很简单,如果您执行其中的一半然后脚本中断(服务器重新启动、PHP 超时,...)并且您的数据仍然一致,那么它们没有任何问题 - 您可能不使用事务。

    如果你认为如果你没有明确地启动它们就不会使用事务,那你可能错了。这取决于数据库,但它可能会在每次查询时自动启动事务。
    https://stackoverflow.com/a/2950764/437763

    【讨论】:

      猜你喜欢
      • 2019-10-25
      • 2019-04-19
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 2011-12-22
      • 2012-10-12
      相关资源
      最近更新 更多