[データベース]取引をお伺いします...あなたは何になりましたか.



トランザクションとは?


トランザクションは、データにアクセスおよび変更する論理単位です.
データベース・システム内では、ユーザー・クエリーの処理にトランザクション単位が使用されます.

トランザクション管理


取引で処理する必要がある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.一貫性


単一のトランザクションは、データの整合性を維持します.データ整合性制約には、明示的に宣言された制約と暗黙的に宣言された制約が含まれます.
  • 明示的に指定された整合性制約(明示的に宣言された制約)
    (例えば、プライマリ・キー、外部キー
  • )
  • Implicit整合性制約(デフォルトで宣言された制約)
    (たとえば、トランザクションの実行前後の和は同じです.)
  • 3.Isolation(孤立)


    実際には複数のトランザクションを同時に実行しますが、各トランザクションには他のトランザクションがないと判断し、自分のトランザクションに集中できます.
    孤立性を確保する最も簡単な方法は、複数のトランザクションをシリアルで実行することです.(oneaftheother)1つのトランザクションが完了した後に共通データにアクセスするため、2つのトランザクション間に干渉はありません.しかし,スループットと平均応答時間の観点から,性能はあまりよくなく,実際にはシリアル実行ではない.

    4.Durability(継続)


    一度に完了したトランザクションの結果は、後でシステム障害が発生してもデータベースに反映されます.
    お客様が正常に50万元振り込んだ場合、翌日システムの故障で銀行が取引明細を確認できないと、大きな問題が発生します.このような持続不可能なデータベースシステムは、実際の生活では使用できません.

    取引ステータス


    トランザクション・ステータスは、activepartially committedcommittedabortedです.
    次のようにグラフ形式で表示されます.