首页 > 编程知识 正文

spring默认事务隔离级别,数据库默认的事务隔离级别

时间:2023-05-03 20:26:12 阅读:47181 作者:2149

mysql事务隔离级别与spring事务隔离级别的区别:

脏读:为什么会发生脏读,是因为对数据库的更改会立即生效。 根据是否被锁定,数据库的运行与事务无关。 事务只是保证对数据库的操作是否会被取消。 缺省情况下,mysql是行级锁定,在修改时仅锁定被修改的行。 由于在锁定过程中其他用户线程无法看到修改结果,因此会出现无法重复读取、无法幻读的问题

mysql的事务隔离是通过行级锁定实现的

oracle的行级锁定只有独占锁定未被共享锁定。 默认情况下,它不是使用锁定机制隔离的,而是按版本控制的,因此不会出现脏读,但会出现重复读问题。 由于a线程在修改过程中未被锁定,因此b线程保持可读

幻读的理由:

解释幻读:幻读是因为a线程在一定范围内修改了大量数据,b线程又添加了新数据,所以用户认为自己没有修改全部数据;

幻读原因: mysql缺省情况下使用行级锁定而不是表级锁定实现,因此在修改过程中其他线程当然可以插入新的数据,对于使用mysql表级锁定(如MyIsAM )的引擎,幻读是如此

spring隔离级别:

spring的隔离级别始终是,如果数据库锁定机制支持的数据库没有行级锁定机制,也没有版本控制,则spring也没有办法

脏读和不可重复读的区别在于,读时是否有读共享锁,不可重复读是否有读共享锁。脏读是写时加了排他锁

spring与数据库(mysql )隔离级别的比较:

由spring管理的事务是逻辑事务,但物理事务和逻辑事务之间的区别在于事务的传播行为。 spring隔离级别与数据库相对应,在创建dml时,数据在数据库中已实际进行了修改,但由于多线程锁定的关系,即使其他线程出现,也看不到该dml操作的结果。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。