4种事务:
串行读:事务串行执行,效率最低
可重复读:一个事务不会去修改已经读取但未提交的数据。也就是说它没有提交前,怎么读都是那个数值。避免不了幻读
读未提交:即使没有提交,也可以被别人读到。会造成脏读,幻读,不可重复。
读已提交:读取已经提交的数据。避免不了幻读以及不可重复读,比如现在a读到b为1,在它操作前,c把b+1了,那么现在a读到的b为2,这就乱套了。
脏读:一个事务读到了另一个事务回滚前的数据。比如读未提交,a读到c修改过后b的值为1,而此时c回滚b为0,那么a脏读了
不可重复读:事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。例如:读已提交事务
幻读:a根据条件读取数据n条,b系统操作之后添加了m条,那么a就幻读了,现在结果为n+m条
mysql默认是可重复读,至于幻读,使用悲观锁去解决
不可重复读,幻读区别:
前者针对update、delete,后者针对insert