<iframe src="//www.googletagmanager.com/ns.html?id=GTM-KRK26M" height="0" width="0" style="display:none;visibility:hidden"></iframe>

トランザクションとは?ACID・ロールバック(ITパスポート・テクノロジ系)

恋もデータも、途中で終わっちゃうのはイヤ…!
大事な処理を“最後までちゃんと”終わらせてくれるのが、トランザクションっていう仕組みなんだよっ!

トランザクションとは?

「銀行の振込中にアプリが落ちたらどうなるの!?」って心配になったことない?
そんなときに大活躍するのが「トランザクション処理」ってしくみなんだよっ

トランザクションとは、「処理のひとまとまり」のこと。
たとえば、AさんからBさんへ送金する場合は…

  • Aさんの口座からお金を減らす
  • Bさんの口座にお金を増やす

この2つの処理は「セット」で成功してほしいよね?

そのために「両方ちゃんと終わるまで処理を確定しない」のが、トランザクションの考え方だよ~!

トランザクションの4つの約束(ACID特性)

トランザクションが安全に動くには、4つの性質を守る必要があるよ!
それが「ACID特性(エーシッド)」って呼ばれてるのっ

特性内容意味
A (Atomicity)
原子性
オールorナッシングぜんぶ成功 or ぜんぶ失敗!
中途半端はNG!
C (Consistency)
一貫性
ルール守る処理の前後で矛盾しないように
I (Isolation)
独立性
お互いに邪魔しない同時に動いてもそれぞれの結果はちゃんと独立
D (Durability)
永続性
確定したら壊れない成功した処理は電源が切れても残るよっ

たとえば、電車のチケット予約中に他の人と競合しても、ちゃんと1人分しか確保されないようにするのも、ACIDの力だよっ!

排他制御とデッドロックとは?

複数の人が同時に同じデータを操作したら…大混乱だよね。
それを防ぐのが「排他制御(はいたせいぎょ)」ってしくみ!

でもね、排他制御をうまくやらないと、デッドロック(にらみ合い状態)になっちゃうことも…。

イメージはこんな感じ!

  • わたし:Aテーブルをロック中 → Bテーブルが欲しい
  • あなた:Bテーブルをロック中 → Aテーブルが欲しい

…お互いに待ってるだけで、永遠に処理が進まない😭
これがデッドロックだよ〜!

トランザクションのリカバリ(復旧)方法!

もし何かトラブルが起きちゃったら…?
大丈夫!「ロールバック」や「チェックポイント」でリカバリできる仕組みがあるの!

  • ロールバック:トランザクション中の失敗をなかったことにして、元の状態に戻す
  • チェックポイント:定期的に記録して、途中から復旧できるようにする

さらに「2相コミット」っていう、安全に複数データベースに反映する手法もあるんだよ!
ちゃんと準備→実行って段階をふむのがポイントだよっ。

トランザクションに関するITパスポート試験の過去問!

DBMSのトランザクションに関する記述として、適切なものはどれか。

ア:あるデータベースの内容を他のデータベースに複製し,内容の同期をとる。
イ:データベースに対して行った操作を,順次記録する。
ウ:データベースに対する一連の処理が全て成功したら変更結果を確定し,途中で失敗したら処理前の状態に戻す。
エ:データベースの表の索引を作成し,検索時には索引を使用する。

正解は『ウ』

トランザクションとは、関連する複数の処理をひとまとまりにして実行・管理する仕組みだよ。

連携処理を「すべて成功したときにだけ確定(コミット)して、失敗したら元に戻す(ロールバック)」方式で実現するのが、トランザクションの役割だよ~!

ITパスポート試験をスマホで手軽に勉強!

「えろ勉」も戦略的に開発&運営してるよ~!この記事が勉強になったり、ためになったよ〜って思ったら、なにかアクションをお願い!!「えろの力で勉強するゲーム:えろ勉

もし恋愛にもロールバックがあったら、
「告白失敗」って記録… なかったことにしたいなぁ🥹

関連記事

TOP