数据库的事务机制第三篇
2016-08-12 19:46
169 查看
事务隔离级别
尽管数据库为用户提供了锁的DML操作方式,但直接使用锁管理是非常麻烦的,因此数据库为用户提供了自动锁机制。只要用户指定会话的事务隔离级别,数据库就会分析事务中的SQL语句,然后自动为事务操作的数据资源添加上适合的锁。此外数据库还会维护这些锁,当一个资源上的锁数目太多时,自动进行锁升级以提高系统的运行性能,而这一过程对用户来说完全是透明的。
ANSI/ISO SQL 92标准定义了4个等级的事务隔离级别,在相同数据环境下,使用相同的输入,执行相同的工作,根据不同的隔离级别,可以导致不同的结果。不同事务隔离级别能够解决的数据并发问题的能力是不同的。
表 1 事务隔离级别对并发问题的解决情况
事务的隔离级别和数据库并发性是对立的,两者此增彼长。一般来说,使用READ UNCOMMITED隔离级别的数据库拥有最高的并发性和吞吐量,而使用SERIALIZABLE隔离级别的数据库并发性最低。
SQL 92定义READ UNCOMMITED主要是为了提供非阻塞读的能力,Oracle虽然也支持READ UNCOMMITED,但它不支持脏读,因为Oracle使用多版本机制彻底解决了在非阻塞读时读到脏数据的问题并保证读的一致性,所以,Oracle的READ COMMITTED隔离级别就已经满足了SQL 92标准的REPEATABLE READ隔离级别。
SQL 92推荐使用REPEATABLE READ以保证数据的读一致性,不过用户可以根据应用的需要选择适合的隔离等级。
尽管数据库为用户提供了锁的DML操作方式,但直接使用锁管理是非常麻烦的,因此数据库为用户提供了自动锁机制。只要用户指定会话的事务隔离级别,数据库就会分析事务中的SQL语句,然后自动为事务操作的数据资源添加上适合的锁。此外数据库还会维护这些锁,当一个资源上的锁数目太多时,自动进行锁升级以提高系统的运行性能,而这一过程对用户来说完全是透明的。
ANSI/ISO SQL 92标准定义了4个等级的事务隔离级别,在相同数据环境下,使用相同的输入,执行相同的工作,根据不同的隔离级别,可以导致不同的结果。不同事务隔离级别能够解决的数据并发问题的能力是不同的。
表 1 事务隔离级别对并发问题的解决情况
[align=center]隔离级别[/align] | [align=center]脏读[/align] | [align=center]不可[/align] [align=center]重复读[/align] | [align=center]幻象读[/align] | [align=center]第一类丢失更新[/align] | [align=center]第二类丢失更新[/align] |
READ UNCOMMITED | [align=center]允许[/align] | [align=center]允许[/align] | [align=center]允许[/align] | [align=center]不允许[/align] | [align=center]允许[/align] |
READ COMMITTED | [align=center]不允许[/align] | [align=center]允许[/align] | [align=center]允许[/align] | [align=center]不允许[/align] | [align=center]允许[/align] |
REPEATABLE READ | [align=center]不允许[/align] | [align=center]不允许[/align] | [align=center]允许[/align] | [align=center]不允许[/align] | [align=center]不允许[/align] |
SERIALIZABLE | [align=center]不允许[/align] | [align=center]不允许[/align] | [align=center]不允许[/align] | [align=center]不允许[/align] | [align=center]不允许[/align] |
SQL 92定义READ UNCOMMITED主要是为了提供非阻塞读的能力,Oracle虽然也支持READ UNCOMMITED,但它不支持脏读,因为Oracle使用多版本机制彻底解决了在非阻塞读时读到脏数据的问题并保证读的一致性,所以,Oracle的READ COMMITTED隔离级别就已经满足了SQL 92标准的REPEATABLE READ隔离级别。
SQL 92推荐使用REPEATABLE READ以保证数据的读一致性,不过用户可以根据应用的需要选择适合的隔离等级。
相关文章推荐
- MS SQL Server数据库事务锁机制分析
- MS SQL Server数据库事务锁机制分析
- Spring3数据库事务管理机制
- 数据库的事务隔离机制
- 数据库事务隔离级别的实现-锁机制
- MS SQL Server数据库事务锁机制分析
- 数据库的脏数据?加锁? 数据库事务隔离级别和锁实现机制
- 数据库的事务、脏读、不可重复读和幻读 以及隔离机制
- 数据库之事务机制详解。
- 数据库并发机制及事务隔离机制
- .net中数据库事务机制
- [转]MS SQL Server数据库事务锁机制分析
- 关于事务处理机制和原理、分布数据库设计架构与原理
- 【转】MSSQLServer数据库事务锁机制分析
- MS SQL Server数据库事务锁机制分析
- MS SQL Server数据库事务锁机制分析
- [转载]MS SQL Server数据库事务锁机制分析
- 数据库的事务和锁机制(SQL Server)
- 数据库并发事务控制四:postgresql数据库的锁机制
- .net中数据库事务机制