时间:2024-07-25 08:02:03
mysql怎么解决幻读
MySQL解决幻读主要有以下两种方式:
1. 对select操作手动加行X锁:在select语句后面添加for update,这样在事务中获取的是行锁,即使当前记录不存在,事务也会获得一把记录锁。这样其他事务就无法插入此索引的记录,从而消除幻读。
2. 提升隔离级别为SERIALIZABLE:这是悲观的认为幻读时刻都会发生,故会自动的隐式的对事务所需资源加排它锁,其他事务访问此资源会被阻塞等待,故事务是安全的,但需要认真考虑性能。
需要注意的是,MySQL的锁是针对索引,如果记录不存在,会加next-key lock / gap 锁 / 间隙锁,实现对某记录的预先占用。
《怎样解决mysql的幻读》不代表本网站观点,如有侵权请联系我们删除
精彩推荐