MySQL的默认事务隔离级别是?

发布于 2019-12-18 16:06:26
关注者
1
被浏览
4725
2 个回答
  • 面试哥
    面试哥 2020-01-07
    为面试而生,有面试问题,就找面试哥。
    1. 读未提交(RU): 一个事务还没提交时, 它做的变更就能被别的事务看到.
    2. 读提交(RC): 一个事务提交之后, 它做的变更才会被其他事务看到.
    3. 可重复读(RR): 一个事务执行过程中看到的数据, 总是跟这个事务在启动时看到的数据是一致的. 当然在可重复读隔离级别下, 未提交变更对其他事务也是不可见的.
    4. 串行化(S): 对于同一行记录, 读写都会加锁. 当出现读写锁冲突的时候, 后访问的事务必须等前一个事务执行完成才能继续执行.
  • 面试哥
    面试哥 2019-12-18
    为面试而生,有面试问题,就找面试哥。

    MySQL InnoDB 存储引擎的默认支持的隔离级别是 REPEATABLE-READ(可重读)。我们可以通过SELECT @@tx_isolation;命令来查看

    sql mysql> SELECT @@tx_isolation;

    +-----------------+

    | @@tx_isolation |

    +-----------------+

    | REPEATABLE-READ |

    +-----------------+

    这里需要注意的是:与 SQL 标准不同的地方在于 InnoDB 存储引擎在 REPEATABLE-READ(可重读) 事务隔离级别下使用的是Next-Key Lock 锁算法,因此可以避免幻读的产生,这与其他数据库系统(如 SQL Server) 是不同的。所以说InnoDB 存储引擎的默认支持的隔离级别是 REPEATABLE-READ(可重读) 已经可以完全保证事务的隔离性要求,即达到了 SQL标准的 SERIALIZABLE(可串行化) 隔离级别。因为隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是 READ-COMMITTED(读取提交内容) ,但是你要知道的是InnoDB 存储引擎默认使用 REPEAaTABLE-READ(可重读) 并不会有任何性能损失。

    InnoDB 存储引擎在 分布式事务 的情况下一般会用到 SERIALIZABLE(可串行化) 隔离级别。

知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看