- 浏览: 455787 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (229)
- gef (1)
- emf (0)
- rcp (2)
- 杂谈 (3)
- draw2d (2)
- xml (1)
- spring (16)
- osgi (1)
- jsp (6)
- hibernate (8)
- j2se (41)
- oracle (25)
- js (23)
- ognl (1)
- struts2 (2)
- webwork (1)
- prototype (1)
- dwr (3)
- struts (7)
- axis2 (3)
- axis1 (6)
- lucene (9)
- pop3 (1)
- aspectj (1)
- 网络协议 (6)
- bat (6)
- Quartz (5)
- jms (3)
- jndi (7)
- 网络爬虫 (7)
- acegi (1)
- linux (5)
- 缓存 (1)
- mysql (1)
- 在使用Java处理图形应用时,经常有人推荐设置 -Djava.awt.headless=true,具体含义和效果查了一下,记录在这里分享 Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。 Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主 (1)
最新评论
-
hanmiao:
注释掉的那壹行少了壹個斜线,楼主...
servlet导出excel -
天下无贼:
Thread.Interrupt方法,只是通过扔出异常的方式, ...
Java Thread.interrupt 害人! 中断JAVA线程(zz) -
天下无贼:
呵呵,是你自己写错了。
Java Thread.interrupt 害人! 中断JAVA线程(zz) -
MO_ZHUANG_D:
如果是真的就感激不尽了
Axure RP教程 -
小嘴冰凉:
在开始执行的时候,如果是数据库存储,程序会从数据库中查job信 ...
quartz的持久化
事务管理概述
“事务”是一个逻辑工作单元,它包括一系列的操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。事务包括4个基本特性,也就是我们常说的ACID,其中包括:
1.Atomic(原子性,这里的“原子”即代表事务中的各个操作不可分割)
事务中包含的操作被看作是一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。
2.Consistency(一致性)
一致性意味着,只有合法的数据才会被写入数据库,否则会回滚到最初状态。事务确保数据库的状态从一个一致状态转变为另一个一致状态。
3.Isolation(隔离性)
多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
4.Durability(持久性)
已被提交的事务对数据库的修改应该永久保存在数据库中。
并发事务处理下产生的意外情况
1.丢失更新
事务1:更新一条记录。
事务2:更新事务1处理中的记录。
事务1:调用commit进行提交。
事务2:调用commit进行提交。
此时事务1所做的修改完全被事务2的修改覆盖,称为丢失更新。
当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。因为每个事务都不知道其它事务的存在,最后的更新将重写由其它事务所做的更新,这将导致数据丢失。
2.脏读(Dirty Read):一个事务读取到了另外一个事务没有提交的数据,所以你可能会看到一些最后被另一个事务回滚掉的数据。
事务1:更新一条记录。
事务2:读取事务1更新的记录。
事务1:调用commit进行提交或调用rollback进行回滚。
此时事务2读取到的数据是保存在数据库内存中的数据,称为脏读。读到的数据为脏数据
详细解释:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
3.不可重复读(NonRepeatable Read):在同一事务中,两次读取同一数据,得到内容不同。即一个事务再次读取之前曾经读取过的数据时,发现该数据已经被另一个已提交的事务修改。
事务1:查询一条记录。
事务2:更新事务1查询的记录。
事务2:调用commit进行提交。
事务1:再次查询上次的记录。
此时事务1对同一数据查询了两次,可得到的内容不同,称为不可重复读。
4.幻读(Phantom Read):同一事务中,用同样的操作读取两次,得到的记录数不相同。即一个事务重新执行一个查询,返回一批符合查询条件的记录,但这些记录中包含了因为其它最近提交的事务而产生的新记录。
事务1:查询表中所有记录
事务2:插入一条或一批记录
事务2:调用commit进行提交
事务1:再次查询表中所有记录
此时事务1两次查询到的记录是不一样的,称为幻读
详细解释:幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
事务隔离等级
为了避免并发事务处理下产生的意外情况,标准SQL规范定义了4中事务隔离等级。
1.Read Uncommitted
最低等级的事务隔离,直译就是读“未提交”,意思就是即使另一个并发事务还没有提交,当前事务也能读到这个改变,这是很不安全的。Read Uncommitted允许脏读,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。
此级别的事务隔离等级对于大多数逻辑严格的应用系统而言是难以接受的,脏读取的出现将为系统的并发逻辑带来极大隐患。
2.Read Committed
直译就是读“提交”,意思就是一个事务不会读到另一个事务已修改但未提交的数据。Read Committed允许不可重复读取,但不允许脏读取。读取数据的事务允许其他并发事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。
此级别的事务隔离等级是最常用的,并且是大多数数据库的默认隔离级别,同时也适用于大多数系统。
3.Repeatable Read
直译就是“可重复读取”,这就是说同一事务先后执行相同查询语句的时候,得到的结果是一样的。这也意味着一个事务不可能更新已经由另一个事务读取但未提交(回滚)的数据。Repeatable Read禁止不可重复读取和脏读,但是有时可能出现幻读。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。
4.Serializable
最高等级的事务隔离级别,也提供了最严格的隔离机制。直译就是“序列化”,意思是说这个事务执行的时候不允许别的事务并发执行。Serializable提供严格的事务隔离级别,可以防止脏读,不可重复读取和幻读,它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。
“事务”是一个逻辑工作单元,它包括一系列的操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。事务包括4个基本特性,也就是我们常说的ACID,其中包括:
1.Atomic(原子性,这里的“原子”即代表事务中的各个操作不可分割)
事务中包含的操作被看作是一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。
2.Consistency(一致性)
一致性意味着,只有合法的数据才会被写入数据库,否则会回滚到最初状态。事务确保数据库的状态从一个一致状态转变为另一个一致状态。
3.Isolation(隔离性)
多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
4.Durability(持久性)
已被提交的事务对数据库的修改应该永久保存在数据库中。
并发事务处理下产生的意外情况
1.丢失更新
事务1:更新一条记录。
事务2:更新事务1处理中的记录。
事务1:调用commit进行提交。
事务2:调用commit进行提交。
此时事务1所做的修改完全被事务2的修改覆盖,称为丢失更新。
当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。因为每个事务都不知道其它事务的存在,最后的更新将重写由其它事务所做的更新,这将导致数据丢失。
2.脏读(Dirty Read):一个事务读取到了另外一个事务没有提交的数据,所以你可能会看到一些最后被另一个事务回滚掉的数据。
事务1:更新一条记录。
事务2:读取事务1更新的记录。
事务1:调用commit进行提交或调用rollback进行回滚。
此时事务2读取到的数据是保存在数据库内存中的数据,称为脏读。读到的数据为脏数据
详细解释:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
3.不可重复读(NonRepeatable Read):在同一事务中,两次读取同一数据,得到内容不同。即一个事务再次读取之前曾经读取过的数据时,发现该数据已经被另一个已提交的事务修改。
事务1:查询一条记录。
事务2:更新事务1查询的记录。
事务2:调用commit进行提交。
事务1:再次查询上次的记录。
此时事务1对同一数据查询了两次,可得到的内容不同,称为不可重复读。
4.幻读(Phantom Read):同一事务中,用同样的操作读取两次,得到的记录数不相同。即一个事务重新执行一个查询,返回一批符合查询条件的记录,但这些记录中包含了因为其它最近提交的事务而产生的新记录。
事务1:查询表中所有记录
事务2:插入一条或一批记录
事务2:调用commit进行提交
事务1:再次查询表中所有记录
此时事务1两次查询到的记录是不一样的,称为幻读
详细解释:幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
事务隔离等级
为了避免并发事务处理下产生的意外情况,标准SQL规范定义了4中事务隔离等级。
1.Read Uncommitted
最低等级的事务隔离,直译就是读“未提交”,意思就是即使另一个并发事务还没有提交,当前事务也能读到这个改变,这是很不安全的。Read Uncommitted允许脏读,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。
此级别的事务隔离等级对于大多数逻辑严格的应用系统而言是难以接受的,脏读取的出现将为系统的并发逻辑带来极大隐患。
2.Read Committed
直译就是读“提交”,意思就是一个事务不会读到另一个事务已修改但未提交的数据。Read Committed允许不可重复读取,但不允许脏读取。读取数据的事务允许其他并发事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。
此级别的事务隔离等级是最常用的,并且是大多数数据库的默认隔离级别,同时也适用于大多数系统。
3.Repeatable Read
直译就是“可重复读取”,这就是说同一事务先后执行相同查询语句的时候,得到的结果是一样的。这也意味着一个事务不可能更新已经由另一个事务读取但未提交(回滚)的数据。Repeatable Read禁止不可重复读取和脏读,但是有时可能出现幻读。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。
4.Serializable
最高等级的事务隔离级别,也提供了最严格的隔离机制。直译就是“序列化”,意思是说这个事务执行的时候不允许别的事务并发执行。Serializable提供严格的事务隔离级别,可以防止脏读,不可重复读取和幻读,它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。
发表评论
-
Oracle reverse函数
2011-12-08 13:56 2041Oracle reverse函数 2007-10-25 14: ... -
教你快速掌握Oracle数据库中的like优化-性能调优
2011-12-08 13:55 12021。尽量不要使用 like '%..%' 2 ... -
嵌套SQL的查询速度比较分析
2011-12-08 13:55 1345嵌套SQL的查询速度比较分析 文章中使用Oracle自带的H ... -
Oracle执行计划详解
2011-07-26 11:40 1052Oracle执行计划详解 --- 作者:TTT BLOG 本文 ... -
闲谈Oracle执行计划的步骤顺序
2011-07-13 17:45 1253经过长时间学习Oracle, ... -
oracle表分区详解
2010-12-01 12:17 1011此文从以下几个方面来整理关于分区表的概念及操作: ... -
回滚段探究
2010-10-26 17:09 885http://blog.csdn.net/biti_rainy ... -
block的一些概念
2010-10-26 10:10 1149http://space.itpub.net/12361284 ... -
Oracle Buffer Cache原理总结(一)
2010-10-26 09:53 1464http://space.itpub.net/?uid-123 ... -
oracle的表空间、分区表、以及索引的总结
2010-05-18 15:32 1274表空间: Oracle的UNDOTBS01.DBF文件太大的 ... -
数据库中事务机制的进阶使用(整理)
2009-11-02 10:13 1628在前面的两篇blog中,我写了些关于数据库中的锁方面的一些内 ... -
PL/SQL Developer使用技巧
2009-08-31 13:24 8821、PL/SQL Developer记住登 ... -
oracle中的角色
2009-08-31 13:23 1001一、何为角色? 我 ... -
oracle的异常处理
2009-08-18 11:07 948oracle提供了预定义例外、非预定义例外和自定义例外三 ... -
在Oracle中使用自治事务保存日志表条目
2009-08-18 10:41 1140[size=x-large] [摘要] ... -
Oracle内存参数调优技术详解
2009-07-31 16:46 1667[size=large] 前言 近来公司技术,研发都在 ... -
如何在WebLogic 8.1.6环境中查找有连接池泄漏的代码
2009-07-31 13:09 2701[size=large] 解决连接池泄漏步骤 登录we ... -
Oracle导出程序Exp的使用
2009-07-16 12:23 2725http://www.blogjava.net/xiaohu/ ... -
createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,Re
2008-11-25 17:14 1081用缺省设置创建时,ResultSet 是一种只能访问一次(on ... -
oracle 闪回查询
2008-11-21 14:22 1423--对一般用户如果想执行 闪回查询 需要设置下列3个参数! 1 ...
相关推荐
标题中的"xinpianjianceyi.rar_74LS47_74ls151_74ls194_xinpianjianceyi_单片机程序"指示这是一个关于单片机程序的压缩包,主要关注74系列逻辑集成电路的检测。其中74LS47、74LS151和74LS194是具体涉及到的芯片型号...
"ls_mmse_ls_mmse_u"可能指的是两个不同的实现或改进版本:LS-MMSE和更新版的LS-MMSE("updated")。这可能意味着作者对原始的LS-MMSE算法进行了优化或者添加了新的特性。 提供的压缩包"ls_mmse_updated.zip"包含了...
标题中的"LS.zip_class_ls_ls models_lsmode"暗示了我们正在探讨与“类LS”相关的数学模型,可能是一个特定的算法或者统计方法,而"LS_models"和"lsmode"可能是该方法的实现或特定模式。描述中的"Mathematical ...
在Unix/Linux系统中,`ls`命令用于列举目录内容,而在Windows系统中,可以使用`dir`命令。对于程序开发,编程语言如Python有os模块,Java有File类,这些都能帮助开发者遍历目录及其子目录,获取文件和目录的详细信息...
"LS.zip_LS均衡_LS均衡_OFDM均衡_OFDM的均衡"这个压缩包文件聚焦于OFDM系统中的一个重要概念——均衡技术,特别是线性最小均方误差(LS,Least Squares)均衡。以下将详细介绍LS均衡及其在OFDM系统中的应用。 1. ...
标题"OFDM.rar_LS OFDM_MMSE LS_channel estimation_ls_ofdm"提及了两种常用的信道估计方法:最小二乘(Least Squares, LS)和最小均方误差(Minimum Mean Square Error, MMSE)。这两种方法都是为了确定信道的频率...
在实际仿真中,"ls_mmse.rar"压缩包内的"ls_mmse"文件可能是MATLAB或类似编程环境中的代码,用于实现这两种估计算法的仿真过程。"www.pudn.com.txt"可能是相关文档或参考资料,包含了更多关于仿真设置、参数解释和...
《深入剖析Linux "ls" 命令源码》 在Linux系统中,"ls"命令是我们日常操作中最常用的工具之一,它用于列出目录中的文件和子目录。本文将详细探讨"ls"命令的源码,帮助我们理解其内部工作原理,加深对Linux内核和...
本文将深入探讨“LS.rar_LS 频域 信道 估计_LS信道估计_LS算法_OFDM信道估计LS_ls”这一主题,主要关注线性最小均方误差(Linear Least Squares, 简称LS)算法在OFDM系统的频域信道估计中的应用。 首先,我们需要...
了解Linux的基本命令(如ls, cd, mkdir, rm, cp, mv等)和文件系统结构(如/proc, /sys, /var, /etc等)是项目的基础。 2. **Shell脚本编程**:在Linux项目中,shell脚本用于自动化任务,如文件处理、系统维护和...
74LS138和74LS164是两种常用的集成电路,在电子工程,特别是数字电路设计中,它们被广泛应用于各种系统,包括数码管显示系统。本文将深入探讨这两个芯片的功能、工作原理以及如何结合使用来实现数码管的显示。 74LS...
LS vs MMSE estimator for SISO OFDM system
标题中的"ls_mmse.zip_LS MMSE matlab_LS MMSE比较_ls_ls-svm_mmse"涉及到的是在信号处理和机器学习领域中的两种算法:最小均方误差(Minimum Mean Square Error, MMSE)和线性最小均方误差(Least Squares, LS)。...
本资料包“matlab.zip_LS DFT_MIMO-OFDM_信道估计 ls_信道估计 ls_信道估计DFT”提供了基于LS(Least Squares)方法和DFT(Discrete Fourier Transform)的信道估计MATLAB程序,旨在帮助理解和实现这一关键的通信...
这份"LS_DYNA官方接触方法介绍"的资料将深入讲解这一核心概念,对于初学者来说是宝贵的资源。 1. **接触类型**:LS-DYNA提供了多种接触类型,包括表面到表面(Surface-to-Surface)、体积到体积(Volume-to-Volume...
"LS-MMSE_mmse_mmse信道估计-MMSE信道估计_LS算法_信道估计mmse_源码.zip"这个压缩包文件显然包含了关于线性最小均方误差(Least Squares, LS)和最小均方误差(Minimum Mean Square Error, MMSE)两种信道估计方法...
C语言实现Linux_ls命令_ls
这个"ls-dyna_example.zip_DYNA example_LS DYNA_LS Dyna example_S64E_h"压缩包包含了多个示例文件,用于演示和测试LS-DYNA的功能。 首先,我们看到的`contact.projectile.k`文件可能是一个关于弹丸撞击的示例,...
74ls47原理,针对共阴型数码管,代码简短,可供参考
"53114781jpeg_ls_v2.2_ls_jpeg_jpegLS_V2_"这个标题暗示了我们正在处理JPEG_LS的一个特定版本,即V2.2。这可能是一个软件库或者实现该压缩算法的源代码包,用于开发人员在自己的应用程序中集成JPEG_LS功能。 源码...