リピータブルリードとファントムリード

トランザクション処理 システム入門の「6.7 幻の回避」という節に出てくる例がよくあるファントムリードの例と若干違っていたので、googleに聞いてみました。結局「幻の回避」に出てくるような例が一般的に言われるファントムリードに分類されるのかどうかはよくわからず(話の流れから言ってたぶん大丈夫だと思いますが)。それよりもリピータブルリードとファントムリードの定義が曖昧にかかれているページがいくつかあるのが気になりました。

Java Transaction Processing: Design and Implementation (Hewlett-Packard Professional Books)のp.162には次のようにありました。

When a phantom read occurs, there will be a new row of data that was not available in the original result set. This is different from a repeatable read where data has changed; phantom reads occur when new data is added to the system.

changeaddの違いということですね。