1.はじめに
トランザクション(トランザクション)とは、論理的な作業単位として実行される一連の操作を指します。これらの操作はすべて成功するか、すべて失敗します。このトランザクションにより、複数のデータの変更が1つの単位として処理されます。
たとえば、張山はATM機で100元をLi Siに送金します。銀行のビジネスシステムでは、主に2段階のデータ変更操作が実行されます。1つは張山の口座から100元を差し引くことであり、もう1つは李Siの口座に100元を追加することです。操作1が正常に実行され、操作2が失敗した場合はどうなりますか?現時点では、このような状況を回避するためにトランザクション制御が必要です。
MySQLでは、Innodbストレージエンジンを使用するデータベースまたはテーブルのみがトランザクションをサポートします。
トランザクションは、データベースの整合性を維持するために使用され、SQLステートメントのバッチが実行されるか実行されないかを保証します。
トランザクションは、挿入、更新、および削除ステートメントを管理するために使用されます。
2.機能
データベースがトランザクションをサポートすると主張する場合、データベースには4つのACID機能、つまりAtomicity(原子性)、Consistency(一貫性)、Isolation(分離)、およびDurability(永続性)が必要です。
- Atomicity:トランザクションはアトミックな作業単位である必要があります。トランザクションに含まれるすべての操作は、実行されるか実行されないかのいずれかです。
- 一貫性:トランザクションが完了すると、すべてのデータを一貫性のある状態に保つ必要があります。
- 分離:トランザクションは独立して実行され、複数のトランザクションは互いに干渉することなく互いに分離されます。トランザクションを100%分離すると、速度が犠牲になります。
- 永続性:トランザクションが完了した後、システムへの影響は永続的です。
3.トランザクション制御
デフォルトでは、MySQLはトランザクションを自動的にコミットします。つまり、挿入、更新、および削除のすべてのSQLステートメントは、送信後すぐにコミット操作を実行します。さらに、トランザクションの開始を使用するか、トランザクションの開始を開始するか、自動コミットの値を0に設定できます。トランザクションの場合、ロールバックまたはコミットします。
トランザクションの送信
次の図に示すように、100元をテストユーザーアカウントから管理者アカウントに転送して送信します。
トランザクションのロールバック
次の図に示すように、ロールバック操作のために、テストユーザーアカウントから管理者アカウントに100元を転送します。