ホームページ  >  記事  >  データベース  >  mysqlにトランザクションはありますか?

mysqlにトランザクションはありますか?

青灯夜游
青灯夜游オリジナル
2020-10-20 16:35:502442ブラウズ

mysql にはトランザクションがありますが、トランザクションをサポートしているのは Innodb データベース エンジンを使用するデータベースまたはテーブルだけです。トランザクション処理は、データベースの整合性を維持するために使用できます。トランザクション処理は、すべてのコマンド全体とともに操作リクエストをシステムに送信または取り消します。つまり、この一連のデータベース コマンドが実行されるか、または実行されません。

mysqlにトランザクションはありますか?

(推奨チュートリアル: mysql ビデオ チュートリアル )

データベース トランザクション (トランザクション) はメカニズムであり、操作です。シーケンスにはデータベース操作コマンドのセットが含まれます。トランザクションは、すべてのコマンド全体とともに操作リクエストをシステムに送信または取り消します。つまり、この一連のデータベース コマンドは実行されるか実行されないかのどちらかであるため、トランザクションは分割できない論理的な作業単位となります。

データベース システムで同時操作を実行する場合、トランザクションは最小の制御単位として使用されます。これは、複数のユーザーが同時に操作するデータベース システムに特に適しています。たとえば、航空会社の予約システム、銀行、保険会社、証券取引システムなどです。

  • MySQL では、Innodb データベース エンジンを使用するデータベースまたはテーブルのみがトランザクションをサポートします。

  • トランザクション処理を使用すると、データベースの整合性を維持し、SQL ステートメントのバッチがすべて実行されるか、まったく実行されないかを確認できます。

  • トランザクションは、挿入、更新、削除ステートメントの管理に使用されます。

トランザクションには、アトミック性、一貫性、分離性、および独立性という 4 つの特性があります。耐久性、これら 4 つの特性は、多くの場合 ACID と呼ばれます。

1. アトミック性

トランザクションは完全な操作です。トランザクションの要素は分割できません (アトミック)。トランザクション内のすべての要素は、全体としてコミットまたはロールバックする必要があります。トランザクション内のいずれかの要素が失敗すると、トランザクション全体が失敗します。

銀行振込トランザクションを例に挙げると、トランザクションが送信されると、2 つの口座のデータが更新されます。何らかの理由で両方のアカウントが正常に更新される前にトランザクションが終了した場合、両方のアカウントの残高は更新されず、アカウント残高への変更は元に戻され、トランザクションを部分的にコミットすることはできません。

2. 一貫性

トランザクションが完了すると、データは一貫した状態になる必要があります。つまり、データベースに保存されているデータは、トランザクションが開始される前は一貫した状態にあります。進行中のトランザクション中に、データが部分的に変更されるなど、データが不整合な状態になる可能性があります。ただし、トランザクションが正常に完了したら、データを既知の一貫した状態に再度戻す必要があります。トランザクションを通じてデータに加えられた変更によってデータが損傷したり、トランザクションによってデータ ストレージが不安定な状態になることはありません。

銀行振込取引を例に挙げます。トランザクションが開始される前は、すべての口座残高の合計は一貫した状態にあります。取引の過程で、一方の口座の残高は減りますが、もう一方の口座の残高は変更されません。したがって、すべての口座残高の合計は一致しません。トランザクションが完了すると、アカウントの合計残高は再び一貫した状態に復元されます。

3. 分離

データを変更するすべての同時トランザクションは互いに分離されており、これはトランザクションが独立している必要があり、いかなる形でも依存してはいけないことを示します。他の事柄に影響を与える、または影響を与える。データを変更するトランザクションは、同じデータを使用する別のトランザクションが開始される前、または同じデータを使用する別のトランザクションが終了した後にデータにアクセスできます。

さらに、トランザクションがデータを変更するときに、他のプロセスが同時に同じデータを使用している場合、トランザクションが正常にコミットされるまでデータの変更は有効になりません。張三と李斯の間の転送と、王武と趙爾の間の転送は常に互いに独立しています。

4. 耐久性

トランザクションの耐久性とは、システムに障害が発生するかどうかに関係なく、トランザクションの結果が永続的であることを意味します。

トランザクションが正常に完了すると、システムに障害が発生した場合でも、トランザクションによってデータベースに加えられた変更は永続的になります。つまり、トランザクションがコミットされると、トランザクションによってデータに加えられた変更はデータベースに永続的に保持されます。

トランザクションの ACID 原則により、トランザクションが正常にコミットされるか、失敗してロールバックされるか、その 2 つのいずれかが保証されます。したがって、トランザクションに対する変更は回復可能です。つまり、トランザクションが失敗すると、そのデータ変更はトランザクションが実行される前の状態に復元されます。

以上がmysqlにトランザクションはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。