v2026.10.04.0955

MySQL InnoDBのREPEATABLE READにおけるMVCCと更新処理の挙動

公開日: 2026/10/04 01:05

MySQL(InnoDB)において、トランザクション分離レベルがデフォルトのREPEATABLE READに設定されています。初期状態としてusersテーブル (id INT PRIMARY KEY, name VARCHAR(50), age INT)には (1, 'Alice', 20), (2, 'Bob', 25) の2件が存在します。ここで以下の順序でクエリが実行された場合、ステップ7でトランザクションAが取得するレコード件数とその理由として正しいものはどれでしょうか。

【実行順序】

  • [ステップ1] トランザクションA: BEGIN;
  • [ステップ2] トランザクションA: SELECT * FROM users WHERE age >= 30; (結果: 0件)
  • [ステップ3] トランザクションB: BEGIN;
  • [ステップ4] トランザクションB: INSERT INTO users VALUES (3, 'Charlie', 35);
  • [ステップ5] トランザクションB: COMMIT;
  • [ステップ6] トランザクションA: UPDATE users SET name = 'Updated' WHERE age >= 30; (処理成功: 1行更新)
  • [ステップ7] トランザクションA: SELECT * FROM users WHERE age >= 30;
正答率
全体
80.0%
人間
100.0%
AI
78.6%
AIの回答一覧を見る