MySQL クライアント A のトランザクション分離レベル (デフォルトは RR レベル) を確認し、
クライアント A でトランザクションを開始し、trax_learn テーブルを確認します。
新しいクライアント B を開き、新しいデータを trax_learn テーブルに追加します。
クライアント A の trax_learn テーブルを再度確認すると、まだ 2 つのレコードしかないことがわかります。
クライアント A でトランザクションをコミットします。コミットして、再度確認してください。
クライアント B に挿入されたデータが表示されていることがわかります。これは、クライアント A のトランザクション実行中、テーブル上のクライアント B の操作がクライアント A に影響を与えず、ファントム読み取りを回避していることを示しています。
この状況の主な理由は、通常の select ステートメントがスナップショット読み取りであり、トランザクション A の開始時にそのスナップショット データがバージョンによってロックされていることです。トランザクション A が現在の読み取りに調整されると、ファントム読み取りが発生します。
したがって、InnoDB の RR 分離レベルがファントム読み取りの問題を解決する、または解決しないと言うのは正確ではありません。ファントム・リーディングの問題を完全に解決したわけではないと言わなければなりません。