私はそれがファントムクエリ...などと呼ばれている理由について混乱していますが、これら3つのクエリを想定します -なぜファントムクエリと呼ばれていますか?
クエリ1
SELECT * FROM users
WHERE salary BETWEEN 10000 AND 300000;
リターン2つのレコード。
クエリ2
INSERT INTO users VALUES (3, 'Bob', 270000);
COMMIT;
クエリ1再び
SELECT * FROM users
WHERE salary BETWEEN 10000 AND 30000;
リターン3を記録。
参照してくださいそれは私にとっては普通のようです。私は彼らが「Phantom read」と呼ばれる理由を理解していません。すべてのトランザクションが異なる時期に起こっているので、常に最新のデータを取得しています。最初に2つのレコードがあり、後で1レコードが挿入されました。再度クエリを実行すると、更新されたデータ、つまり3レコードが取得されます。なぜそれが幻のクエリと呼ばれるのですか?
3つの別々のトランザクションで起きている場合、ファントムではありません。ファントムの問題は、同じトランザクションが範囲問合せを複数回実行し、2つの問合せの間にファントム行が挿入された場合に発生します。 –