6

複数のデータベース テーブルからデータを取得し、5 つ以上のテーブルで選択クエリを使用して、トランザクション クエリを使用してパフォーマンスを向上させたいと考えています。

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トランザクションは/ UPDATE/クエリを大幅に後押ししDELETEます (InnoDB のようなトランザクション エンジンを使用する場合) が、SELECTクエリのみでは、トランザクションを使用してもパフォーマンスは向上しない可能性があります (ただし、一貫性を確保するためにアプリケーション ロジックで必要になる場合があります)。

速度の違いの主な理由: トランザクションを使用しない場合、サーバーはすべての更新をできるだけ早くディスクにフラッシュして、サーバーがクラッシュしたり電力が失われたりしてもデータが生き残るようにする必要があります。トランザクションでは、サーバーは、1 つのトランザクションでバッチ化されたすべての更新がディスクにコミットされるか、すべてがロールバックされることを保証するだけで済みます。言い換えれば、サーバーは多くの書き込みを少数のディスク操作に自由にグループ化でき、データが安全であることが絶対に確実な場合にのみトランザクションをコミットする必要があります。パフォーマンスの違いは、簡単に 1 ~ 2 桁になる可能性があります。

于 2013-08-23T05:37:14.963 に答える