2013-08-23 91 views
2

我想从多个数据库表中的数据,并希望在五年多的表使用select查询,使用事务查询性能提高的帮助:MySQL事务性查询是否可以提高多个SELECT语句的性能?

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(); 
} 
+0

不,它不会加快速度,因为MySQL现在必须管理事务上下文以及选择,因此您正在执行更多操作。除了这些读取查询索引和适当的查询方法会更重要。 – Namphibian

回答

0

交易可以给INSERT/UPDATE/DELETE大的推动作用查询(假设您使用InnoDB等事务引擎),但在SELECT上,只有使用事务的查询不可能提高性能(但您的应用程序逻辑可能仍需要确保一致性)。

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