6

我想从多个数据库表中获取数据,并希望对五个以上的表使用选择查询,使用事务查询来帮助提高性能:

try {
    // First of all, let's begin a transaction
    $this->db->beginTransaction();

    // Multiple select queries 

    $this->db->commit();
    return $data;
} catch (Exception $e) {
    // An exception has been thrown
    // We must rollback the transaction
    $this->db->rollback();
}
4

1 回答 1

6

INSERT//事务可以极大地促进查询UPDATEDELETE前提是您使用 InnoDB 之类的事务引擎),但SELECT仅在查询上,使用事务不太可能提高性能(但您的应用程序逻辑可能仍需要确保一致性)。

速度差异的主要原因:如果您不使用事务,服务器必须尽快将每个更新刷新到磁盘,以确保在服务器崩溃或断电时数据仍然存在。对于事务,服务器只需要保证一个事务中批处理的所有更新都提交到磁盘,或者整个事情都回滚。换句话说,服务器可以自由地将许多写入分组到几个磁盘操作中,并且只有在绝对确定数据安全时才需要提交事务。性能差异很容易达到一两个数量级。

于 2013-08-23T05:37:14.963 回答