スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。



  

トランザクション

データの整合性を保つためによく使われるトランザクションについて忘れないようにまとめてみました。
トランザクションは、複数のデータの変更を管理して、
全ての処理が成功した時のみデータを変更する仕組みのことである。

トランザクションは満たさなければならない技術的要件として、ACID特性というものがある。
Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)
の4つから構成されていて、各特性の概要は下記にあげる。
・原子性は、全て実行されるか、あるいは全く実行されないことを保証する性質のことである。
・一貫性は、開始と終了時にあらかじめ与えられた整合性を満たすことを保証する性質のことだ。
・独立性は、操作の過程が他の操作から影響されない性質ことである。
・永続性は、完了後データが消失しないことを保証する性質のことだ。
以上が信頼性のあるトランザクションシステムの持つべき性質として定義した概念である。

また、トランザクション処理を複数行う場合に、
どれほどの一貫性、正確性で実行するかを4段階で定義したトランザクション分離レベルというものがある。
分離レベルが低いほど処理の並行性が高くなり処理速度向上が期待できるが、
その分データの不整合などのリスクが発生する。
トランザクション分離レベルの4段階について下記にあげる。
・「READ UNCOMMITTED」と呼ばれる、
 一番低い分離レベルで、高速であり、簡単に使用できるが不整合などのリスクが多くある。
・「READ COMMITTED」と呼ばれる、
 多くのDBでデフォルトで使用される分離レベルで、確定した最新データを常に読み取る。
・「REPEATABLE READ」と呼ばれる、
 MySQLでデフォルトで使用される分離レベルで、読み取り対象のデータを常に読み取る。
・「SERIALIZABLE」と呼ばれる、
 最も高い分離レベルで、不整合などのリスクが少ないが、
 強制的にトランザクションを順序付けて処理して、読み取るすべての行にロックをかけるため、
 処理の待ち時間が増える。

トランザクションには、データの不整合などのリスクを3段階で定義したものがある。
概要を下記にあげる。
・「ダーティリード」と呼ばれる現象で、
 別のトランザクションで変更されていないデータが読み取れる。
・「ファジーリード」と呼ばれる現象で、
 別のトランザクションで更新後データを読むことにより、一貫性がなくなる。
・「ファントムリード」と呼ばれる現象で、
 別のトランザクションで挿入されたデータが見えることにより、一貫性がなくなる。

トランザクションについて、より深く知りたい方は調べてみてはいかがでしょうか。
関連記事
スポンサーサイト



  

コメント

非公開コメント

検索フォーム
プロフィール

サトリヒロシ

Author:サトリヒロシ
ビジネスを重視した企画を支援したいエンジニアが、何かを書こうとするブログです。

サトリ潜伏先
サトリ倉庫

WEB関連の技術で調査リクエストがあればご連絡ください。

カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
カテゴリ
最新記事
最新コメント
最新トラックバック
月別アーカイブ
RSSリンクの表示
リンク
QRコード
QRコード
FC2カウンター
スポンサードリンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。