ダーティリード(IT用語)

ダーティリード

ダーティリードとは

トランザクション処理中の未確定データが他のトランザクションから読み取られてしまう現象。

ダーティリードのわかりやすい事例

ダーティリードのわかりやすい事例

ある在庫管理システムで、トランザクションAが在庫数を更新しようとしている最中に、トランザクションBがその未確定の在庫数を読み取ってしまう場合があります。

例えば、トランザクションAが在庫を30個減らす処理を行っている途中で、トランザクションBがその在庫数を読み取り、さらに20個減らす処理を行うとします。

その後、トランザクションAがエラーでロールバックされると、実際の在庫数は元のままですが、トランザクションBは誤った在庫数を基に処理を行ってしまいます。

銀行の口座管理システムで、トランザクションAが口座残高を更新している最中に、トランザクションBがその未確定の残高を読み取る場合があります。

例えば、トランザクションAが口座から1000円を引き出す処理を行っている途中で、トランザクションBがその残高を読み取り、さらに500円を引き出す処理を行うとします。

その後、トランザクションAがエラーでロールバックされると、実際の残高は元のままですが、トランザクションBは誤った残高を基に処理を行ってしまいます。

CHATGPT参照

会話で学ぼ

基礎知識編

【ダーティリード】って何?
データベースのトランザクション処理に関する用語なんだ。
トランザクション処理って何?
トランザクション処理っていうのは、
データベースで行われる一連の操作のことだよ。

例えば、銀行の口座にお金を振り込むとき、
その操作が全部完了するか、
全部キャンセルされるかのどちらかになるよ。
なるほど、それで「ダーティリード」はどう関係してくるの?
「ダーティリード」っていうのは、
あるトランザクションがまだ完了していないデータを、
別のトランザクションが読み取ってしまうことなんだ。

例えば、あなたがデータを更新している最中に、
わたしがそのデータを読み取ってしまうと、
あなたの更新が完了する前の不完全なデータを
わたしが使ってしまうことになるんだ。
それって、問題にならないの?
うん、大きな問題になることがあるよ。

例えば、銀行のシステムでダーティリードが起きると、
正確な残高がわからなくなってしまうことがあるんだ。
それは困るね。
どうやって防ぐの?
ダーティリードを防ぐためには、
トランザクションの分離レベルを上げる必要があるよ。

例えば、「リピータブルリード」や
「シリアライザブル」っていう分離レベルを使うと、
他のトランザクションが未完了のデータを読み取ることができなくなるよ。

SNSで発信

X(元Twitter)

YouTubeショート

未投稿

スタンドエフエム

【デジナンばあばチャンネル】

ばあばと、もに隊長のおもしろトークだよ(笑)

https://stand.fm/episodes/66ff1f9667c162daed4eba5e

インスタグラム

未投稿

tiktok

未投稿

Facebook

https://www.facebook.com/share/r/FfCTVjAmAyiWxCPP/

スレッズ

https://www.threads.net/@konomimoni/post/DAMViiFCbTV/?xmt=AQGz7-vPvBC8UN-oUxzqP4kMK1lFXy6oI3ehIiuDc5ekuw

あとがき

このサイトは

少しずつ、ヒントもしくは知識を共有していくサイトです。

最後まで読んでいただきありがとうございました♡

この記事が気に入ったら
フォローしよう

最新情報をお届けします

Twitterでフォローしよう

最新の記事