rdbms
文書の過去の版を表示しています。
リレーショナルデータベース
トランザクション
エラーリード
ダーティリード | 未コミットデータをリードすること。ロールバックされると不正な値を読み込んだという事になる。 |
ファジーリード | トランザクション中に同じ条件で2回リードしたときに、結果が異なる。トランザクション中に他トランザクションによってコミットされると発生する。 |
ファントムリード | トランザクション中に同じ条件で2回リードしたときに、行が消えたり増えたりしている。トランザクション中に他トランザクションによって挿入、削除がコミットされると発生する。 |
トランザクション分離レベル
Read Uncommited | コミットされてないデータが読める。 |
Read Commited | コミットされてないデータは読めない。ダーティリードを抑止する。 |
Repeatable Read | トランザクション終了まで、そのトランザクションに影響するデータを更新できない。ファジーリードまで防げる。 |
Serializable | トランザクション終了まで、そのトランザクションに影響しうるトランザクションは実行されず、待ち状態になる。ファントムリードまで防げる。 |
下に行く程安全だが性能が犠牲になる。多くのDBはRead Commitedがデフォルト。MySQL(InnoDB)はRepeatable Readがデフォルト。
例えばトランザクションAに select * from hoge > 5 というクエリがあると、他のトランザクションはAの完了までRepeatable Readではhogeが5以上のデータをupdateできない。Serializableではhogeが5以上のデータをinsert, delete, updateできない。
エンタープライズRDBMS無料版
Oracleなどの高価なDBMSにも無料版が存在する。ライセンスをよく読んで使用すること。
-
- 要OTN登録
rdbms.1392745553.txt.gz · 最終更新: 2014/02/18 17:45 by nullpon