Tôi nghĩ rằng hành vi mong đợi là một chút sai lệch. Trước khi db_slow cam kết, tất cả các hàng trong bảng đều bị khóa. Sau khi nó cam kết, có hai hàng. db_fast được bỏ chặn khi db_slow cam kết. Do đó, hành vi là:
- db_slow:chọn hàng 1 và khóa hàng
- db_slow:thấy rằng nó chỉ có 1 hàng và đợi
- db_fast:thử chọn hàng 1, thấy hàng bị khóa, hãy đợi
- db_slow:chèn hàng bằng '2'
- db_slow:cam kết
- db_fast:bỏ chặn và đọc 2 hàng
- db_fast:không làm gì cả
- Kết thúc bằng foo:1, 2