- 浏览: 447154 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
飞天奔月:
我来个简单点的代码 使用 LinkedHashSetpubli ...
ArrayList去重 -
飞天奔月:
public static <T> List< ...
ArrayList去重 -
aaron7524:
事务隔离级别 -
月陨殇:
wlh269 写道rswh110 写道lz内容写的不错,就是略 ...
事务隔离级别 -
lnx1824:
我的更奇怪,在本地静态的可以,放jetty里的页面后就不然,都 ...
JS得到上传图片尺寸
数据库提供了四种事务隔离级别, 不同的隔离级别采用不同的锁类开来实现.
在四种隔离级别中, Serializable的级别最高, Read Uncommited级别最低.
大多数数据库的默认隔离级别为: Read Commited,如Sql Server , Oracle.
少数数据库默认的隔离级别为Repeatable Read, 如MySQL InnoDB存储引擎
即使是最低的级别,也不会出现 第一类 丢失 更新问题 .
1. 脏读(事务没提交,提前读取):脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。
2. 不可重复读(两次读的不一致) :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题。
3. 幻读 : 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。例如,一个编辑人员更改作者提交的文档,但当生产部门将其更改内容合并到该文档的主复本时,发现作者已将未编辑的新材料添加到该文档中。如果在编辑人员和生产部门完成对原始文档的处理之前,任何人都不能将新材料添加到文档中,则可以避免该问题。
4.第一类更新丢失(回滚丢失):
当2个事务更新相同的数据源,如果第一个事务被提交,而另外一个事务却被撤销,那么会连同第一个事务所做的跟新也被撤销。也就是说第一个事务做的跟新丢失了。
5.第二类更新丢失(覆盖丢失):
第二类更新丢失实在实际应用中经常遇到的并发问题,他和不可重复读本质上是同一类并发问题,通常他被看做不可重复读的特例:当2个或这个多个事务查询同样的记录然后各自基于最初的查询结果更新该行时,会造成第二类丢失更新。因为每个事务都不知道不知道其他事务的存在,最后一个事务对记录做的修改将覆盖其他事务对该记录做的已提交的跟新...
补充 : 基于元数据的 Spring 声明性事务 :
Isolation 属性一共支持五种事务设置,具体介绍如下:
l DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 .
l READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )
l READ_COMMITTED 会出现不可重复读、幻读问题(锁定正在读取的行)
l REPEATABLE_READ 会出幻读(锁定所读取的所有行)
l SERIALIZABLE 保证所有的情况不会发生(锁表)
不可重复读的重点是修改 :
同样的条件 , 你读取过的数据 , 再次读取出来发现值不一样了
幻读的重点在于新增或者删除
同样的条件 , 第 1 次和第 2 次读出来的记录数不一样
lz内容写的不错,就是略有点小的语法错误!(我是指汉字的和语言表达上),不过真的写的不错!学习了
谢谢
楼主,能不能就具体例子说明,这样方便我们菜鸟理解
拿一个帖子做比喻:
post有id,title,content
两个用户,一个是作者本人,另一个是爬虫。
作者因为某方面原因(错别字)想修改这个帖子的内容,已经改好了,但是还未提交,这时候爬虫来了,读了帖子的内容,回去就存到自己的数据库里了,这时候作者本人提交了修改后的内容。这个时候爬虫读到的还是有错别字的文章。
有一定的温习知识的价值!
lz内容写的不错,就是略有点小的语法错误!(我是指汉字的和语言表达上),不过真的写的不错!学习了
谢谢
希望LZ也说一下第一类丢失和第二类丢失...
我已经跟新这个帖子了,去看看吧!希望能有所帮组!
在四种隔离级别中, Serializable的级别最高, Read Uncommited级别最低.
大多数数据库的默认隔离级别为: Read Commited,如Sql Server , Oracle.
少数数据库默认的隔离级别为Repeatable Read, 如MySQL InnoDB存储引擎
即使是最低的级别,也不会出现 第一类 丢失 更新问题 .
1. 脏读(事务没提交,提前读取):脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。
2. 不可重复读(两次读的不一致) :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题。
3. 幻读 : 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。例如,一个编辑人员更改作者提交的文档,但当生产部门将其更改内容合并到该文档的主复本时,发现作者已将未编辑的新材料添加到该文档中。如果在编辑人员和生产部门完成对原始文档的处理之前,任何人都不能将新材料添加到文档中,则可以避免该问题。
4.第一类更新丢失(回滚丢失):
当2个事务更新相同的数据源,如果第一个事务被提交,而另外一个事务却被撤销,那么会连同第一个事务所做的跟新也被撤销。也就是说第一个事务做的跟新丢失了。
5.第二类更新丢失(覆盖丢失):
第二类更新丢失实在实际应用中经常遇到的并发问题,他和不可重复读本质上是同一类并发问题,通常他被看做不可重复读的特例:当2个或这个多个事务查询同样的记录然后各自基于最初的查询结果更新该行时,会造成第二类丢失更新。因为每个事务都不知道不知道其他事务的存在,最后一个事务对记录做的修改将覆盖其他事务对该记录做的已提交的跟新...
补充 : 基于元数据的 Spring 声明性事务 :
Isolation 属性一共支持五种事务设置,具体介绍如下:
l DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 .
l READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )
l READ_COMMITTED 会出现不可重复读、幻读问题(锁定正在读取的行)
l REPEATABLE_READ 会出幻读(锁定所读取的所有行)
l SERIALIZABLE 保证所有的情况不会发生(锁表)
不可重复读的重点是修改 :
同样的条件 , 你读取过的数据 , 再次读取出来发现值不一样了
幻读的重点在于新增或者删除
同样的条件 , 第 1 次和第 2 次读出来的记录数不一样
评论
13 楼
aaron7524
2013-12-20
12 楼
月陨殇
2013-10-27
wlh269 写道
rswh110 写道
lz内容写的不错,就是略有点小的语法错误!(我是指汉字的和语言表达上),不过真的写的不错!学习了
谢谢
楼主,能不能就具体例子说明,这样方便我们菜鸟理解
11 楼
ITdavid
2009-03-19
方便记忆了,谢谢LZ!
10 楼
wicker
2009-03-13
新手,学习了
9 楼
duduli
2009-03-03
以前没怎么注重过隔离级别的,
只是稍微看了下的。
楼主举例挺不错的。
只是稍微看了下的。
楼主举例挺不错的。
8 楼
jiyanliang
2009-03-03
only_java 写道
脏读->事务没提交,提前读取
怎么个提前读取呢?假如我修改用户名了,但没提交到数据库。这是另外有一个事务读取了修改了的用户名?应该不会有这样的情况吧?楼主能不能给个例子或是比喻?谢谢!
怎么个提前读取呢?假如我修改用户名了,但没提交到数据库。这是另外有一个事务读取了修改了的用户名?应该不会有这样的情况吧?楼主能不能给个例子或是比喻?谢谢!
拿一个帖子做比喻:
post有id,title,content
两个用户,一个是作者本人,另一个是爬虫。
作者因为某方面原因(错别字)想修改这个帖子的内容,已经改好了,但是还未提交,这时候爬虫来了,读了帖子的内容,回去就存到自己的数据库里了,这时候作者本人提交了修改后的内容。这个时候爬虫读到的还是有错别字的文章。
7 楼
ych19850810
2009-03-03
only_java 写道
脏读->事务没提交,提前读取
怎么个提前读取呢?假如我修改用户名了,但没提交到数据库。这是另外有一个事务读取了修改了的用户名?应该不会有这样的情况吧?楼主能不能给个例子或是比喻?谢谢!
怎么个提前读取呢?假如我修改用户名了,但没提交到数据库。这是另外有一个事务读取了修改了的用户名?应该不会有这样的情况吧?楼主能不能给个例子或是比喻?谢谢!
有一定的温习知识的价值!
6 楼
only_java
2009-03-03
脏读->事务没提交,提前读取
怎么个提前读取呢?假如我修改用户名了,但没提交到数据库。这是另外有一个事务读取了修改了的用户名?应该不会有这样的情况吧?楼主能不能给个例子或是比喻?谢谢!
怎么个提前读取呢?假如我修改用户名了,但没提交到数据库。这是另外有一个事务读取了修改了的用户名?应该不会有这样的情况吧?楼主能不能给个例子或是比喻?谢谢!
5 楼
oldgg
2009-02-17
不错,收藏了
4 楼
wlh269
2009-02-15
rswh110 写道
lz内容写的不错,就是略有点小的语法错误!(我是指汉字的和语言表达上),不过真的写的不错!学习了
谢谢
3 楼
rswh110
2009-02-14
lz内容写的不错,就是略有点小的语法错误!(我是指汉字的和语言表达上),不过真的写的不错!学习了
2 楼
wlh269
2009-02-14
woshihlp 写道
希望LZ也说一下第一类丢失和第二类丢失...
我已经跟新这个帖子了,去看看吧!希望能有所帮组!
1 楼
woshihlp
2009-02-14
希望LZ也说一下第一类丢失和第二类丢失...
发表评论
-
java开发实战视频详解
2017-07-02 08:09 485java开发实战视频详解 链接: http://pan.bai ... -
mysql在window下备份
2013-02-03 09:25 1014命令:mysqldump –uroot –ppassword ... -
NoSQL非关系型数据库
2011-08-23 10:25 1473NoSQL(NoSQL = Not Only SQL ), ... -
Oracle 编码再回顾
2011-02-15 10:53 1121一、什么是Oracle字符集 ... -
位图索引与 B-tree 索引:选择与时间
2010-08-26 10:58 1536位图索引与 B-tree 索引:选择与时间 了解每个索引的正 ... -
Oracle的redo 和undo的区别
2010-07-28 15:33 1003redo--> undo-->datafile i ... -
Oracle归档模式与非归档模式设置
2010-07-16 16:14 1694Oracle的日志归档模式可以有效的防止instance和d ... -
比较牛逼的插入SQL语句
2010-06-02 10:22 1848MessageDaoImpl.java$saveMessa ... -
oracle的分析函数over 及开窗函数
2010-03-07 20:53 1045一:分析函数over Oracle从8.1.6开始提 ... -
Oracle Case 条件函数
2010-03-02 10:53 1275select dx.docid, case ... -
关于两表关联的update
2010-02-23 13:38 1655-- update 一个字段 update a ... -
oracle客户端编码修改
2010-02-04 12:15 1857从注册表修改:HKEY_LOCAL_MACHINE\SOFTW ... -
Oracle两个数据库间的数据同步 (DBLink 、计划任务)
2010-01-31 19:42 7221--配置本地数据库服务器的tnsnames.ora文 ... -
Oracle乱码最佳解决方案(JDK动态代理)
2010-01-18 17:29 4312该文章所解决的问题是Oracle下,乱码问题 描述: 1.库服 ... -
Oracle数据库字符集问题解析
2009-12-14 16:15 999经常看到一些朋友问OR ... -
Oracle函数大全
2009-12-14 16:13 912SQL中的单记录函数 1.ASCII 返回与指定的字 ... -
导入导出
2009-11-10 09:50 889导入命令: 1.cmd进入命令行; (1)无连接登录o ... -
两种外连接
2009-10-26 13:54 923select cpxx.cp_xh, ... -
Oracle Blob (二进制文件的读写)
2009-10-18 23:16 6096import java.io.FileNotFoundEx ... -
Oracle时间操作
2009-08-21 16:04 943一.插入当前日期 //构造系统时间的字符串 Str ...
相关推荐
查询:默认事务隔离级别 mysql> select @@tx_isolation;当前会话的默认事务隔离级别 mysql> select @@session.tx_isolation;当前会话的默认事务隔离级别 mysql> select @@global.tx_isolation;全局的事务隔离级别
事务传播特性&事务隔离级别 详细的事务传播特性&事务隔离级别
介绍数据库事务的四种隔离级别,比较不同隔离级别的区别和影响
MySQL的四种事务隔离级别 1、脏读 2、不可重复读 3、幻读
事务隔离级别 课程目标 了解 —— 事务隔离级别的概念; 理解 —— 事务隔离的四种级别; 掌握 —— 事务隔离级别的设置; 事务隔离级别 事务隔离:每一个事务都有一个所谓的隔离级,它定义了用户彼此之间隔离和交互...
本文档介绍了spring事务隔离级别的使用及详解
06-VIP-深入理解Mysql事务隔离级别与锁机制.pdf
java事务传播特性&事务隔离级别...
MySQL事务隔离级别详解,这个面试经常会面到,必会呀,哈哈
spring事务的传播特性和事务隔离级别
数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为 Read uncommitted:允许脏读。 Read committed: 防止脏读,最常用的隔离级别,并且是大多数数据库的默认隔离级别。 Repeatable read:可以防止脏...
数据库事务隔离级别.docx数据库事务隔离级别.docx数据库事务隔离级别.docx
NULL 博文链接:https://cuishuangjia.iteye.com/blog/964885
SQLSERVER事务隔离级别的实验研究.pdf
事务的属性:1.Propagation:用来设置事务的传播行为事务的传播行为:一个方法运行在了一个开启了事务的方法中时,当前方法是使用原来的事务还是开启了一个新
共享锁主要是为了共享读(select),如果存在事务(一个或多个)拥有对表中数据(关于锁数据的多少,视锁的粒度而定)的共享锁,不允许对锁定的数据进行更新(update)(从锁的角度讲,即不允许事务获取排他锁
前言 ...我们都知道事务的几种性质,数据库中的一致性和隔离性等是实现事务的基本思想,在系统有大量的并发访问的情况下,了解和熟练应用数据库的本身的事务隔离级别,对于写出健壮性,并发处理能力强
Spring事务隔离级别,详细解释SPring事务和事务的隔离级别
数据库事务和隔离级别