数据库弱一致性四个隔离级别
来源:互联网 发布:linux删除用户 编辑:程序博客网 时间:2024/05/06 16:18
SQL-92标准中定义了四个隔离级别,这四个隔离级别在以前版本的SQL Server中即受到支持:
READ UNCOMMITTED是限制性最弱的隔离级别,因为该级别忽略其他事务放置的锁。使用READ UNCOMMITTED级别执行的事务,可以读取尚未由其他事务提交的修改后的数据值;这些行为称为“脏”读。比如,事务1修改一行,事务2在事务1提交之前读取了这一行。如果事务1回滚,事务2就读取了一行没有提交的数据,这样的数据我们认为是不存在的。
READ COMMITTED(Nonrepeatablereads)是SQL Server默认的隔离级别。该级别通过指定语句不能读取其他事务已修改但是尚未提交的数据值,禁止执行脏读。在当前事务中的各个语句执行之间,其他事务仍可以修改、插入或删除数据,从而产生无法重复的读操作,或“影子”数据。比如,事务1读取了一行,事务2修改或者删除这一行并且提交。如果事务1想再一次读取这一行,它将获得修改后的数据或者发现这一样已经被删除,因此事务的第二次读取结果与第一次读取结果不同,因此也叫不可重复读。
REPEATABLE READ是比READ COMMITTED限制性更强的隔离级别。该级别包括READCOMMITTED,并且另外指定了在当前事务提交之前,其他任何事务均不可以修改或删除当前事务已读取的数据。并发性低于 READ COMMITTED,因为已读数据的共享锁在整个事务期间持有,而不是在每个语句结束时释放。比如,事务1读取了一行,事务2想修改或者删除这一行并且提交,但是因为事务1尚未提交,数据行中有事务1的锁,事务2无法进行更新操作,因此事务2阻塞并且回滚。如果这时候事务1想再一次读取这一行,它读取结果与第一次读取结果相同,因此叫可重复读。
SERIALIZABLE 是限制性最强的隔离级别,因为该级别锁定整个范围的键,并一直持有锁,直到事务完成。该级别包括REPEATABLE READ,并增加了在事务完成之前,其他事务不能向事务已读取的范围插入新行的限制。比如,事务1读取了一系列满足搜索条件的行。事务2在执行SQL statement产生一行或者多行满足事务1搜索条件的行时会冲突,则事务2回滚。这时事务1再次读取了一系列满足相同搜索条件的行,第二次读取的结果和第一次读取的结果相同。
- 数据库弱一致性四个隔离级别
- 数据库弱一致性四个隔离级别
- 数据库的四个隔离级别
- 数据库弱一致性四个隔离级别---MySQL的默认隔离级别就是Repeatable,Serializable是最高的事务隔离级别,但代价也花费最高,性能很低,很少使用.
- 数据库事务的四个隔离级别浅析
- 【数据库】隔离级别,锁基础,一致性锁定/非锁定 读
- 数据库事务的四个基本特征以及事务的隔离级别
- 事物的四个隔离级别
- 数据不一致的原因,数据库三范式,事务特性,事务的四个隔离级别,数据库锁
- 数据库隔离级别。。。
- 数据库事务隔离级别
- 数据库隔离级别
- 数据库隔离级别
- 数据库事务隔离级别
- INFORMIX数据库隔离级别
- 数据库隔离级别
- 数据库隔离级别
- 数据库隔离级别
- 内部类
- SQL SERVER 创建链接服务器 SP_addlinkedserver
- 威博文件管理系统4.x系列版本的基础支撑结构图示
- Spring配置DHCP数据源
- 完美程序员的10种品质
- 数据库弱一致性四个隔离级别
- 最大公约数与最小公倍数
- oracle 获取系统文件目录
- samba使用方法
- 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
- 关于反射的一些知识
- 一些关于数据聚类,机器学习的一些理解
- 设计模式学习笔记前言
- 巧妙设置C#的FILEUPLOAD控件样式