データベーススペシャリスト – トランザクションの隔離性水準?

トランザクションというぐらいなのでアプリケーションとデータベースとのやりとりとか、データベース内での手続きとかかな。

隔離性ということはその手続が独立していることとか、そういう意味と推察してみる(知らんのかい)。

ここでいうトランザクション

手続きというか「処理」ですねたぶん、でも個人的に処理という言い方あまり好きじゃないので「やり取り」の方が良いですね。

直列可能性という概念があって、これはトランザクション1とトランザクション2があるとき1が終わったあと2を実行してもOK、2のあと1もOKみたいな複数のトランザクションです。

コミットされてない未確定データを読み込むダーティリードや、同時実行している他のトランザクションにより値が書き換えられるノンリピータブルリード、同時実行トランザクションによりデータが追加されるファントムリードなどで直列可能性は失われるそうです。

隔離性水準とは

上の直列可能性が失われる3つの事象がそれぞれあるかないかで、隔離性水準が決まります。

直列可能性がバッチリな場合は「SERIALIZABLE」、ファントムリードが発生する状態を「REPEATABLE READ」、ノンリピータブルリードも発生する状態を「READ COMMITED」、ダーティリードも発生する状態を「READ UNCOMMITTED」というそうです。

直列可能性が失われてない状態の方が良い状態かというと、それはたぶんシステムによりけりなんだろうなと思います、以上。

※参考)独立性のレベルを示す「隔離性水準」を理解する(@IT)