(1)简述
    MySQL默认设置的事务隔离级别都是 RR 级别,而且MySQL的RR级别是可以避免幻读发生的,这点是MySQL的RR级别的语义跟SQL标准的RR级别的不同,因为SQL标准里规定RR级别是可以发生 幻读的,但是MySQL的RR级别避免了。
    也就是说,MySQL里的执行事务,默认情况下不会发生,脏读,脏写,不可重复读,幻读的问题,事务的执行都是并行的,互不影响,不会读到没提交事务修改的值,修改了值还提交了也不会 读到,即使插入一行值还提交了,也不会读到,总之,事务之间互相不影响。

    (2)MySQL事务隔离级别
    修改MySQL的默认事务隔离级别:
    SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL level
    (level的值可以是REPEATABLE READ,READ COMMITTED,READ UNCOMMITTED,SERIALIZABLE几种级别。)
    一般来说,不用修改这个级别,默认的RR 保证每个事务没别的事务干扰。

    (3)Spring的@Transactional注解 处理事务隔离级别
    在@Transactional注解里有一个isolation参数,这个可以设置事务隔离级别,@Transactional(isolation=isolation.DEFAULT),DEFAULT就是MySQL默认支持什么隔离级别就是什么 隔离级别,也可以手动修改,isolation.READ_UNCOMMITTED,isolation.READ_COMMITTED,isolation.REPEATABLE_READ,isolation.SERIALIZABLE

    (4)总结
    MySQL默认的RR级别隔离机制挺好的,没必要修改。除非事务执行期间多次查询的时候,必须查询别的已提交事务修改过的最新值,如果有这个业务需求可以修改默认隔离级别。

    MySQL默认的事务隔离级别使用的RR,可以避免 脏写,脏读,不可重复读,幻读