首页 / 知科普 / 正文

怎样解决mysql的幻读

时间:2024-07-25 08:02:03

mysql怎么解决幻读 

MySQL解决幻读主要有以下两种方式:

1. 对select操作手动加行X锁:在select语句后面添加for update,这样在事务中获取的是行锁,即使当前记录不存在,事务也会获得一把记录锁。这样其他事务就无法插入此索引的记录,从而消除幻读。

2. 提升隔离级别为SERIALIZABLE:这是悲观的认为幻读时刻都会发生,故会自动的隐式的对事务所需资源加排它锁,其他事务访问此资源会被阻塞等待,故事务是安全的,但需要认真考虑性能。

需要注意的是,MySQL的锁是针对索引,如果记录不存在,会加next-key lock / gap 锁 / 间隙锁,实现对某记录的预先占用。

《怎样解决mysql的幻读》不代表本网站观点,如有侵权请联系我们删除

科技在线 广州云媒派信息技术有限公司 版权所有 粤ICP备2021127029号