データベーストランザクションとは


114

(ウィキペディアからコピーされたとしても)誰かがコンピューティングに適用されるトランザクションの簡単な(しかし、可能な限り単純ではない)説明を提供できますか?

回答:


239

トランザクションは、「全体」として扱いたい作業の単位です。完全に発生するか、まったく発生しないかのどちらかです。

古典的な例は、ある銀行口座から別の銀行口座への送金です。これを行うには、最初にソースアカウントから金額を引き出し、次に宛先アカウントに入金する必要があります。操作は完全に成功する必要があります。途中で止まるとお金がなくなってしまい、とても悪いです。

最近のデータベースでは、トランザクションは他のいくつかのことも実行します。たとえば、他の人が途中で書き込んだデータにアクセスできないようにします。しかし、基本的な考え方は同じです。トランザクションは、何が起こっても、操作するデータが適切な状態になるようにするためのものです。彼らは、ある口座からお金が引き出されても、別の口座に預金されないという状況が発生しないことを保証します。


非常に単純な例をありがとう
Nomadme

素敵な説明!
Yan Myo Aung

81

トランザクションは、状態変化を表す方法です。トランザクションには、一般的にACIDとして知られる4つのプロパティが理想的です。

  • Atomic(変更がコミットされた場合、それは一気に発生します。「変更の半分」が表示されることは決してありません)
  • 一貫性がある(変更は、システムの新しい状態が有効になる場合にのみ発生します。無効な変更をコミットしようとすると失敗し、システムは以前の有効な状態のままになります)
  • 分離(コミットされるまで、トランザクションのどの部分も他の誰も見ません)
  • 耐久性があります(変更が発生すると、トランザクションがコミットされたとシステムが言った場合、クライアントはシステムを「フラッシュ」して変更を「固定」することを心配する必要がありません)

詳細については、Wikipedia ACIDエントリを参照してください。

これは通常データベースに適用されますが、そうである必要はありません。(特に、ソフトウェアトランザクションメモリを参照してください。)


46

ここに簡単な説明があります。アカウントAからアカウントBに100ドルを振り込む必要があります。次のいずれかを実行できます。

accountA -= 100;
accountB += 100;

または

accountB += 100;
accountA -= 100;

ペアの最初の操作と2番目の操作の間に何か問題が発生した場合、問題が発生します-100ドルがなくなったか、どこからともなく出てきました。

トランザクションは、操作のグループにマークを付けて、それらがすべて実行(コミット)するか、システム状態が実行をまったく開始していないかのように(ロールバック)実行するメカニズムです。

beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;

100ドルを送金するか、両方の口座を初期状態のままにします。


31

「データベースを一貫した状態にして、完全に完了するか完全に失敗する必要がある一連のデータ操作ステートメント」


2
データベースだけではありません。この概念を、キューイングサービスや外部システムの状態などの他のコンポーネントに拡張できます。だから、「一貫性のある状態でシステムを残して完全に、完全に完全またはが失敗しなければならないデータ操作文のAシリーズは、」
のMichałChaniewski

10

トランザクションは、1つの単位として扱われる1つ以上のSQL操作のシーケンスです。

具体的には、各トランザクションは分離して実行されているように見え、さらに、システムに障害が発生した場合、各トランザクションは完全に実行されるか、すべて実行されないかのどちらかです。

トランザクションの概念は、2つの完全に独立した懸念によって動機付けられています。1つは複数のクライアントによるデータベースへの同時アクセスに関係しており、もう1つはシステム障害に耐性のあるシステムを持つことに関係しています。

トランザクションは、ACIDプロパティと呼ばれるものをサポートします。

  • A:原子性;
  • C:一貫性;
  • I:分離。
  • D:耐久性。


1

「トランザクション処理」の定義は、トランザクションをコンピュータサイエンスの概念として扱っているため、より役立つと思います。

ウィキペディアから:

コンピュータサイエンスでは、トランザクション処理は、トランザクションと呼ばれる個別の分割できない操作に分割される情報処理です。各トランザクションは、完全な単位として成功または失敗する必要があります。中間状態のままにすることはできません。

http://en.wikipedia.org/wiki/Transaction_processing#Implementations


1

上記の応答に加えて、少なくとも理論的には、トランザクションにどのような種類のリソースが関与しているかについては制限がないことに注意してください。

ほとんどの場合、それは単なるデータベースまたは複数の個別のデータベースですが、プリンターがトランザクションに参加し、紙詰まりが発生した場合などにトランザクションが失敗する可能性も考えられます。


1

トランザクションは、最小処理単位と見なされるタスクのコレクションとして定義できます。各最小処理単位をさらに分割することはできません。

トランザクションの主な操作は読み取りと書き込みです。

すべてのトランザクションには、正確性、完全性、およびデータの整合性を確保するために、一般にACIDプロパティとして知られる4つのプロパティが含まれている必要があります。


0

トランザクションは、DBMSに関してはアトミックなアクションだと思います。

つまり、分離することはできません。はい、トランザクションでは、システムが実行するいくつかの命令がある場合があります。しかし、それらは結合されて単一の基本的なタスクを完了します。

例えば。橋を渡る必要があります(これをトランザクションとして扱いましょう)。これを行うには、たとえば、100ステップ必要です。全体として、これらのステップを分離することはできません。それらの半分を完了したら、選択肢は2つしかありません。それらすべてを終了し続けることと、開始​​点に戻ることです。トランザクションの結果と同じです。success(committed)とfail(rollback)


0

トランザクションは分割不可能なデータ処理の単位です。すべてのトランザクションにはACIDプロパティが必要です。

つまり、原子性、一貫性、分離、および耐久性のあるトランザクションはすべてまたは何も中間ではありません(つまり、ある口座から別の口座に送金した場合、ある口座はその分を失う必要があり、他の口座はその金額を獲得する必要がありますが、 1つの口座から送金したが、別の口座がまだ空であり、取引にならない)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.