DBの「トランザクション分離レベル」が必要な理由 (PostgreSQLで,ファントム・リードを防止すべきサンプル事例) - 主に言語とシステム開発に関して

  • 5年くらい前は専門書読んだりして楽しんでいたけど、ちょっと触らないと考え方まで忘れてしまうのが困ります。最近DBのisolationの話を思い出して、確かPostgreSQLではRead CommittedとSerializableの二種類があったのは思い出せるけど、それぞれ何を意図したものだったが全然分からなくなってしまうという哀しい事態に...orz
  • Transaction保護レベルに応じて3つの不具合があって、それぞれを回避するために4つのモードが(理屈の上では)あるという話でした。
    • Dirty Read、Non-Repeatable Read、Phantom Read
    • READ UNCOMMITTED、REPEATABLE READ、READ COMMITTED、SERIALIZABLE
  • OraclePostgreSQLはREAD COMMITTEDとSERIALIZABLEのみサポートだっけ。まあ、そりゃそうだよな。教育目的ならともかく、商用品で絶対に使われないモードの実装に金使うわけに行かないだろうし。
  • 最近はSQLじゃないDBとか面白そうなものがはやりつつあるけど、もう一度勉強し直すのは敷居が高そうだな。遊びながら使っていくくらいの付き合いが出来ればよいのだけど。