一个错误观点:
在使用加锁读的方式读取使用InnoDB存储引擎的表时,当在执行查询时没有使用到索引时,行锁会被转换为表锁。(X)
对于任何INSERT、DELETE、UPDATE、SELECT … LOCK IN SHARE MODE、SELECT … FOR UPDATE语句来说,InnoDB存储引擎都不会加表级别的S锁或者X锁(我们这里不讨论表级意向锁的添加),只会加行级锁。所以即使对于全表扫描的加锁读语句来说,也只会对表中的记录进行加锁,而不是直接加一个表锁。
讨论的只是InnoDB加的事务锁,即为了避免脏写、脏读、不可重复读、幻读这些现象带来的一致性问题而加的锁
加锁就是在内存中生成这样的一个锁结构(除了生成锁结构,还有一种称作隐式锁的加锁方式,不用生成锁结构)
同一个事务,在同一个页面上加的相同类型的锁都放在同一个锁结构里。