由于不同的数据库相同的隔离级别的效果是不太一样的,如mysql的RR级别可以避免幻读,而其他的就不一定可以。
那么在使用相同的注解@Transactional(isolation = Isolation.隔离级别),用在不同的数据库上,其隔离的效果是否完全相同?
即:spring的事务隔离注解底层是依托所使用的数据库来控制吗?(效果因所用数据库不同而不同)还是spring自己有一套控制办法?(使用任何数据库效果都一样)
由于不同的数据库相同的隔离级别的效果是不太一样的,如mysql的RR级别可以避免幻读,而其他的就不一定可以。
那么在使用相同的注解@Transactional(isolation = Isolation.隔离级别),用在不同的数据库上,其隔离的效果是否完全相同?
即:spring的事务隔离注解底层是依托所使用的数据库来控制吗?(效果因所用数据库不同而不同)还是spring自己有一套控制办法?(使用任何数据库效果都一样)
spring中注解指定的隔离级别对不同数据库有不同的效果,甚至可能没有效果。不同的数据库底层设计不同,支持的隔离级别也不同,即使是同名的隔离级别,实际的作用效果也不太可能完全一致。
spring没有自己的隔离级别控制方案,隔离级别完全依赖于数据库支持哪些级别。