トランザクション 〜基本情報技術者合格のための学習法〜

トランザクション_アイキャッチ基本情報

トランザクション管理と排他制御

データベースを複数の人が同時に変更できてしまいますと、内容に不整合が生じる可能性があります。

チータくん
チータくん

例えば、在庫数が3個の商品があったとします。

2人のスタッフが、同時に商品を1つずつ受け渡し、先に1人のスタッフが、『在庫数を2』と、データを書き込みをしている最中に、後のスタッフが『在庫数を2』とデータを書き込もうとすると、『現在の在庫数は3』と見えいるわけですから、2人とも『在庫数を2』とデータを書きます。

本来では、『在庫数は1』とならないといけないところ、結局、前のスッタフの変更が反映されておらず、後の人によって、反映を削除されたという結果になります。

データベース不整合

このような問題からデータベースを守るのが、トランザクション管理と排他制御です

トランザクション

トランザクションとはデータベースでの一連の処理をひとまとめにしたものを呼びます。
前の例で例えると次の図のような一連の処理がトランザクションです。 トランザクション

排他制御

排他制御とは処理中のデータをロックして、他も人が読み書きできないようにする機能です。

トランザクションの間、使用するデータをロックしておけば、誰かに割り込まれてデータの不整合が生じる恐れがなくなります。

ロックする方法は共有ロック占有ロックがあります

共有ロック

他のユーザーは読むことはできますが、書くことはできません。 共有ロック

占有ロック

他のユーザーは読むことも書くことも、書くことはできません。 占有ロック

デッドロック

ロック機能を使用する場合注意しないと、複数のトランザクションがお互いに干渉し、互いのデータをロックしあい、ロック解除を永遠に待ち続ける現象が起きます。 この現象をデッドロックと呼びます。 デッドロック

 解除するには、いずれかのトランザクションを強制的にキャンセルする必要があります。

トランザクションに求められるACID特性

DBMSでは、トランザクション処理に対し、4つの特性が必須とされています。 それぞれの頭文字をとって、ACID特性と呼ばれます。

Atomicity(原子性)

トランザクションの処理結果に、そこに含まれていた更新処理は全て実行されるか、全て実行されない状態で終わることを保証する性質です。

中途半端に一部だけ実行することは許容しません。

Consistency(一貫性)

トランザクションに含まれる処理はそれぞれの制約を満し、矛盾がないという性質です。

トランザクションの途中で矛盾があった場合、処理を中断してトランザクション実行前に戻すことでデータの一貫性が保たれます。

そのため、あるデータは更新されているが、その他のデータは更新されないというような状態を持ちません。

Isolation(隔離性)

あるトランザクションが実行中の場合、もう一方のその他のトランザクションの影響を受けないという性質です。

排他処理をして、相互に影響が出ません

Durability(耐久性)

トランザクションが完了した後、そのデータ状態が保存され障害が発生しても失われることは無いという性質です。

一般的にはトランザクションのログを記録しておき、障害が起きた場合はログを使用して障害発生前の状態に復旧します。

参考書籍

キタミ式イラストIT塾 基本情報技術者 令和03年
令和03年 イメージ&クレバー方式でよくわかる 栢木先生の基本情報技術者教室 情報処理技術者試験
令和03年 基本情報技術者 合格教本 情報処理技術者試験

コメント

タイトルとURLをコピーしました