フリーキーズ | 独学プログラミング

トランザクションとは

最終更新日

データベースの文脈では、トランザクションは、データベースに対して実行される作業の単位です。トランザクションはデータベースシステムの基本的な構成要素であり、データの整合性と一貫性を確保するために使用されます。トランザクションは多くの操作、あるいは多くのデータ項目に対する操作が、アトミック、一貫性、分離、耐久性を必要とするシステムにおいて極めて重要であり、しばしばACIDという頭字語で呼ばれます。

アトミックとは、トランザクションが単一の不可分な操作として扱われることを保証するもので、トランザクション内のすべての変更がデータベースに適用されるか、またはまったく適用されないかを意味します。

一貫性は、トランザクションがデータベースをある有効な状態から別の有効な状態にすることを保証します。

分離は、トランザクションの同時実行によって、トランザクションが順次実行された場合と同じ状態にデータベースが維持されることを保証します。

耐久性とは、トランザクションが一度コミットされると、システム障害が発生してもコミットされたままであることを保証するものです。

トランザクションの例

例えば、ある銀行口座から別の銀行口座にお金を振り込むとします。この場合、少なくとも2つの操作が必要です。1つ目の口座から金額を引き出し、2つ目の口座に追加します。

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

COMMIT;

この例では、2つのUPDATE文は1つのトランザクションの一部です。START TRANSACTIONコマンドはトランザクションを開始します。COMMITコマンドはトランザクションを終了し、トランザクション内で行われたすべての変更を永続化します。

UPDATE文のどちらかに何か問題が発生した場合、ROLLBACKコマンドを使用してトランザクション全体をロールバックできます(つまり、トランザクション内でこれまでに行われたすべての変更が破棄されます)。これにより、エラーが発生した場合でもデータベースは一貫した状態を維持できます。

トランザクションは、データの破損や不整合を防ぐのに役立つ強力なツールですが、データベースシステムに複雑さを与えるため、データベースのパフォーマンスに悪影響を与えないよう慎重に管理する必要があります。