事务的隔离级别

2020-05-09  本文已影响0人  lsh的学习笔记

标准

SQL标准定义的四个隔离级别为:

  1. READ UNCOMMITTED称为浏览访问(browse access),仅仅针对事务而言的。
  2. READ COMMITTED称为游标稳定(cursorstability)。
  3. REPEATABLE READ是2.9999°的隔离,没有幻读的保护。
  4. SERIALIZABLE称为隔离,或3°的隔离。

默认

Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ的事务隔离级别。

SQL和SQL2标准的默认事务隔离级别是SERIALIZABLE。

InnoDB存储引擎默认支持的隔离级别是REPEATABLE READ,但是与标准SQL不同的是,InnoDB存储引擎在REPEATABLE READ事务隔离级别下,使用Next-Key Lock锁的算法,因此避免幻读的产生。已经能完全保证事务的隔离性要求,即达到SQL标准的SERIALIZABLE隔离级别。

隔离级别越低,事务请求的锁越少或保持锁的时间就越短。这也是为什么大多数数据库系统默认的事务隔离级别是READ COMMITTED。

据了解,大部分的用户质疑 SERIALIZABLE 隔离级别带来的性能问题,但是根据JimGray在《Transaction Processing》一书中指出,两者的开销几乎是一样的甚至 SERIALIZABLE 可能更优!!!

因此在 InnoDB 存储引擎中选择 REPEATABLE READ 的事务隔离级别并不会有任何性能的损失。同样地,即使使用 READ COMMITTED 的隔离级别,用户也不会得到性能的大幅度提升。

上一篇 下一篇

猜你喜欢

热点阅读