ホームページ >データベース >mysql チュートリアル >データベーストランザクションとは何を指しますか?

データベーストランザクションとは何を指しますか?

青灯夜游
青灯夜游オリジナル
2020-12-01 14:35:064136ブラウズ

データベース トランザクションとは、完全に実行されるかまったく実行されない、単一の論理的な作業単位として実行される一連の操作を指します。簡単に言えば、トランザクションは同時実行制御の単位であり、ユーザー定義の A一連の操作。

データベーストランザクションとは何を指しますか?

Alipay を使用してスーパーマーケットに物を買いに行き、スーパーマーケットに 100 元を送金します。実際、これは 2 段階のプロセスです:

  • 最初のステップは、Alipay データベースのアカウントから 100 を引くことです;

  • 2 番目のステップは、スーパーマーケットの Alipay に 100 元を追加することですアカウントを作成してトランザクションが完了する;

しかし、最初のステップが完了し、2 番目のステップが実行される前に停電が発生した場合はどうなるでしょうか?

あなたの口座が 100 元減額されたのに、スーパーの口座の金額が変わっていないということが起こりますが、これは問題ではなく、争う必要はありませんか?

このデータの一貫性の問題を解決するために、データベース トランザクションが登場しました。

トランザクションは、完全にまたはまったく実行されずに、単一の論理的な作業単位として実行される一連の操作を指します。 簡単に言うと、トランザクションは同時実行制御の単位であり、ユーザー定義の一連の操作です。

これは、データベースがデータの一貫性を維持するための単位です。データベースを一貫性のある状態から新しい一貫性のある状態に変更します。簡単に言うと、一連の処理ステップがすべて発生するか、まったく発生しないかのどちらかです。ステップが実行されると、この一連の処理ステップをトランザクションと呼びます。これにより、データの整合性や信頼性を損なうことなく、データが常に一貫した状態に保たれます。トランザクションの実行後、DBMS はデータベース内のデータの整合性を自動的にチェックします。

トランザクションには、原子性、一貫性、分離性、耐久性という 4 つの特性があり、通常これら 4 つの特性は略して ACID と呼ばれます。

1. 原子性

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

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

2. 一貫性

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

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

3. 分離

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

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

4. 耐久性

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

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

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

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

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