我试图理解事务是如何工作的,我遇到了一个对我来说没有多大意义的场景。我希望有人能帮我理解它。我有两笔交易 BEGIN; update data set val = val + 1 where id = 1BEGIN; select * from data然后,在提交第一个事务之前,我在另一个终端中运行第二个查询。我预计
说SELECT FOR UPDATE设置一个IX锁。IX锁是意图排他锁,当发出时它意味着“事务T打算在扫描行上设置X(排它)锁”。MySQL术语表表示,关于意图排他性锁:
一种适用于表级别的锁,用于指示事务打算在表中的行上获取什么样的锁。不同的事务可以在同一表上获取不同类型的意图锁,,但是获取表上的意图排他(IX)锁的第一个事务阻止其
这不是一个完整/正确的MySQL查询仅伪代码: from Notifications as n limitby 1状态:如果将FOR UPDATE与使用页锁或行锁的存储引擎一起使用,则查询检查的行将被写锁定,直到当前事务结束
这里是只返回一条被MySQL锁定的记录,还是它必须扫描所有记录才能找到这条记录