为什么我们需要锁?先别急着回答、回想一下我们在逛淘宝下订单时的一个场景:
InnoDB 是行锁、不存在锁升级问题、也就是、锁住 1 行和锁住 1 千万行的开销是一样
但是、InnoDB 行锁仍然存在一般的锁在高并发下所特有的"劣根性":
● 丢失更新:A的修改被B覆盖、谓之"前浪总被后浪盖"
● 脏读:不同事务间、读到未提交的数据
● 不可重复读:同一事务、两次读不同
外键无索引是Oracle 死锁发生的常见原因、而在InnoDB 、我赶脚、
InnoDB 是"买一送一"、并且、不要你也得要、因为、
在 InnoDB里、会自动对外键添加索引、人为删除外键索引会报错
有兴趣的朋友、对子表 show index from tbname; 便会发现
InnoDB 锁有 3种类型:
● Record Lock:锁定单条记录
● Gap Lock:锁定一个范围的记录、但不包括记录本身
● Next-Key Lock:锁定一个范围的记录、并且包含记录本身、这是默认的锁类型