157

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

4

13 に答える 13

305

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

古典的な例は、ある銀行口座から別の銀行口座への送金です。そのためには、まず元の口座から金額を引き出してから、目的の口座に入金する必要があります。操作は完全に成功する必要があります。途中で止めてしまうとお金がなくなってしまい、とてもまずいです。

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

于 2009-06-10T09:46:51.087 に答える
102

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

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

詳細については、ウィキペディアのACIDエントリを参照してください。

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

于 2009-06-10T09:45:50.420 に答える
63

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

accountA -= 100;
accountB += 100;

また

accountB += 100;
accountA -= 100;

ペアの最初の操作と 2 番目の操作の間に何か問題が発生した場合、問題が発生します。

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

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

100 ドルを送金するか、両方のアカウントを初期状態のままにします。

于 2009-06-10T09:45:40.387 に答える
38

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

于 2009-06-10T09:43:32.873 に答える
4

http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = A tomicity , Consistency , Isolation , Durability

1 つのトランザクションに複数のトランザクション リソースを関与させたい場合は、2 フェーズ コミットソリューションのようなものを使用する必要があります。XAは非常に広くサポートされています。

于 2009-06-10T09:43:23.823 に答える
1

「トランザクション処理」の定義は、コンピューター サイエンスの概念としてトランザクションをカバーしているため、より有用であることをお勧めします。

ウィキペディアから:

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

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

于 2009-06-10T09:47:25.160 に答える
1

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

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

于 2009-06-10T13:52:29.877 に答える
1

トランザクションは、最小処理単位と見なされるタスクの集まりとして定義できます。各最小処理単位は、それ以上分割することはできません。

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

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

于 2017-09-14T10:11:29.537 に答える
0

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

つまり、アトミシティ、一貫性、分離性、および耐久性のあるトランザクションは、オール オア ナッシングですが、中間的なものではありません (つまり、ある口座から別の口座にお金を送金する場合、一方の口座はその金額を失い、もう一方の口座はその金額を獲得する必要がありますが、ある口座から送金し、別の口座がまだ空である場合、取引にはなりません)

于 2014-03-21T11:32:10.427 に答える
0

トランザクションは、DBMS の観点から言えばアトミック アクションだと思います。

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

例えば。橋を歩く必要があり (これをトランザクションとして扱いましょう)、これを行うには、たとえば 100 歩が必要です。全体として、これらの手順を分離することはできません。それらの半分を完了したら、選択肢は 2 つしかありません。それらをすべて完了し、開始点に戻ることです。トランザクションの結果と同じです: 成功 (コミット) と失敗 (ロールバック)

于 2009-06-10T09:55:06.343 に答える