- http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%86%E9%9B%A2%E3%83%AC%E3%83%99%E3%83%AB
- http://dev.mysql.com/doc/refman/5.1/ja/innodb-transaction-isolation.html
- http://dev.mysql.com/doc/refman/5.1/ja/innodb-next-key-locking.html
- http://nippondanji.blogspot.jp/2009/03/mysql7.html
- http://d.hatena.ne.jp/sh2/20090112
- http://itpro.nikkeibp.co.jp/article/COLUMN/20080226/294777/
- http://itpro.nikkeibp.co.jp/article/COLUMN/20080226/294802/
- http://www.fireproject.jp/feature/postgresql/sql-intro/transaction-lock.html
- http://nippondanji.blogspot.jp/2009/03/mysql7.html
mysqlではANSI/ISO SQLで定められている基準より堅牢?になっていて、InnoDBではREAD COMMITEDでNON REPEATABLE READが発生しない。またREPEATABLE READでファントムリードが発生しない、とのこと。
mysqlの設定
- my.cnf
[mysqld] transaction-isolation = {READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE}
InnoDBのdefaultはREPEATABLE READ
- 一時的な設定
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
- 確認
SELECT @@global.tx_isolation; SELECT @@tx_isolation;
ちなみにpostgresqlのdefaultはたしかread committedだったかな。