select * from t where c=5 for update;
c字段没有索引的情况下,上锁是逐行上锁的一个过程.扫描一条上一条,直到所有行扫描完,
rc模式下对所有行上x锁。
rr模式下不仅对所有行上X锁,还对所有区间上gap锁.直到事务提交或者回滚完成后,上的锁才会被释放。
行锁+间隙锁能解决幻读问题缺点就是生产库上会经常出现由于间隙锁导致的死锁现象,所以,你如果把隔离级别设置为读提交的话,就没有间隙锁了。但同时,你要解决可能出现的数据和日志不一致问题,需要把 binlog 格式设置为 row。这,也是现在不少公司使用的配置组合