spring的事务隔离级别

时间:2025-04-22 22:04:13
spring有五大隔离级别:默认值为ISOLATION_DEFAULT(使用数据库的设置),其他四个隔离级别和数据库的隔离级别一样:
1、ISOLATION_DEFAULT:用底层数据库的设置隔离级别,数据库设置的是什么我就用什么
2、ISOLATION_READ_UNCOMMITTED:读未提交,最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读)
3、ISOLATION_READ_COMMITTED:读已提交,一个事务提交后才能被其他事务读取到(会造成幻读、不可重复度),SQL server的默认级别
4、ISOLATION_REPEATABLE_READ:可重复读,一个事务提交后,并且另一个事务提交之后才可以读到上一个事务的值。mysql的默认隔离级别
5、ISOLATION_SERIALIZABLE:序列化,代价最高最可靠的隔离级别,该隔离级别能防止脏读、不可重复读、幻读。
脏读:表示一个事务能够读取到另一个事务还未提交的数据。比如,某个事务尝试插入记录A,此时该事务还未提交,然后另一个事务尝试读取到了记录A。
不可重复度:事务A多次读取同以数据,事务B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。
幻读:指同一个事务内多次查询返回的结果集不一样。比如同一个事务A第一次查询的时候有n条记录,但是第二次同等条件下查询却有n+1条记录,这就好像产生了幻觉。