如何解决SQL并发问题?
网友解答: 高并发最可能遇到的就是思索问题了。首先根据业务确定使用的什么隔离级别,一般要么是确认读,要么是可重复读。确认读有可能两次读的数据不一致可重复读也叫快照读,能确保每次读的数据一
高并发最可能遇到的就是思索问题了。
首先根据业务确定使用的什么隔离级别,一般要么是确认读,要么是可重复读。
确认读有可能两次读的数据不一致
可重复读也叫快照读,能确保每次读的数据一致,但不保证能读到最新commit的数据。
其次要考虑更新语句是否会产生死锁,要确认表中相关字段都有什么锁。
主键:主键索引上锁,数据行上锁
唯一索引:索引上锁,主键索引上锁,数据行上锁
普通索引:会锁住所有符合条件的索引和行,还会上间隙锁
无索引:会锁全表,逐渐释放不符合条件的锁
因此要尽可能只锁需要的行,避免不同事务锁住互相需要的行,造成死锁。