[データベース]取引をお伺いします...あなたは何になりましたか.
1936 ワード
トランザクションとは?
トランザクションは、データにアクセスおよび変更する論理単位です.
データベース・システム内では、ユーザー・クエリーの処理にトランザクション単位が使用されます.
トランザクション管理
取引で処理する必要がある2つの話題があります.
- Failure
一部のトランザクションを実行すると、ハードウェア/ソフトウェア/トランザクションの内部で障害が発生する可能性があります.トランザクションには、データベースの変更操作が含まれる場合があります.システムに障害が発生した場合、変更した値が正しく保存されない場合があります.
- Concurrent execution
通常、多くのユーザーがデータベース・システムに接続してデータを取得または変更します.複数のトランザクションが同時に実行され、トランザクションで同じデータが読み込まれたり書き込まれたりした場合、データ値は常に一致する必要があります.
トランザクションの性質
トランザクションは4つの性質(ACID)を満たす必要があります.
1.原子性
all or nothing. トランザクションは、すべての演算を反映するか、何も反映できないか、または両方を反映する必要があります.1. read(A)
2. A := A – 50
3. write(A)
4. read(B)
5. B := B + 50
6. write(B)
A口座からB口座に50万振り込む取引があると仮定します.3番線までに正常に動作し、6番線までにシステム障害が発生したらどうなりますか?トランザクションが最後まで実行できない場合は、元のデータ値に変更する必要があります.つまり、一部のトランザクションのみを実行する更新はデータベースに反映されません.原子性を満たすためには、ロールバックが必要です.
2.一貫性
単一のトランザクションは、データの整合性を維持します.データ整合性制約には、明示的に宣言された制約と暗黙的に宣言された制約が含まれます.
1. read(A)
2. A := A – 50
3. write(A)
4. read(B)
5. B := B + 50
6. write(B)
(例えば、プライマリ・キー、外部キー
(たとえば、トランザクションの実行前後の和は同じです.)
3.Isolation(孤立)
実際には複数のトランザクションを同時に実行しますが、各トランザクションには他のトランザクションがないと判断し、自分のトランザクションに集中できます.
孤立性を確保する最も簡単な方法は、複数のトランザクションをシリアルで実行することです.(oneaftheother)1つのトランザクションが完了した後に共通データにアクセスするため、2つのトランザクション間に干渉はありません.しかし,スループットと平均応答時間の観点から,性能はあまりよくなく,実際にはシリアル実行ではない.
4.Durability(継続)
一度に完了したトランザクションの結果は、後でシステム障害が発生してもデータベースに反映されます.
お客様が正常に50万元振り込んだ場合、翌日システムの故障で銀行が取引明細を確認できないと、大きな問題が発生します.このような持続不可能なデータベースシステムは、実際の生活では使用できません.
取引ステータス
トランザクション・ステータスは、
active
、partially committed
、committed
、aborted
です.次のようにグラフ形式で表示されます.
Reference
この問題について([データベース]取引をお伺いします...あなたは何になりましたか.), 我々は、より多くの情報をここで見つけました https://velog.io/@bjy100/데이터베이스-트랜잭션-혹시..-너-뭐-돼テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol