A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Yuan先生 中级黑马   /  2013-9-11 14:16  /  1487 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Yuan先生 于 2013-9-11 16:19 编辑

哪位大神给解释一下Oracle数据库中事务的原理,要通俗一点,别弄一大堆术语贴过来

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

4 个回复

倒序浏览
首先什么是事务:事务是在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行。
事务的主要特性是:原子性、一致性、隔离性、持久性
原子性是指事务中包含的所有操作要么全做,要么不做,也就是说所有的活动在数据库中要么全部反映,要么全部不反映,以保证数据库的一致性。   
一致性是指数据库在事务操作前和事务处理后,其中数据必须满足业务的规则约束。
隔离性是指数据库允许多个并发的事务同时对其中的数据进行读写或修改的能力,隔离性可以防止多个事务的并发执行时,由于它们的操作命令交叉执行而导致数据的不一致性。
事务的持久性是指在事务处理结束后,它对数据的修改应该是永久的。即便是系统在遇到故障的情况下也不会丢失,这是数据的重要性决定的。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
我说说我的理解吧:
首先呢,事务有四个特性,这个我也只能说术语了:原子性、一致性、分离性、持久性 ,至于他们的具体解释,你可以百度一下,很容易理解的。
其实你要弄懂事务,也就是把他的这几个特性弄懂。
举个例子就很容易理解了,就拿自银行取钱来说吧,你取钱的时候,要么一次就取出了你要取出的钱数,要么就是这一次操作失败了,也就是发生了异常,那么你当然一毛钱也去不出来,而且你的银行账户中的金额也不会改变的,(如果你提交了取出100块钱的按钮,系统给你的余额也减了100快,但是后面出现了问题,你没能取到钱,那么你的账户中的钱肯定也不能减少的,所以实务操作中就有一个回滚操作让你的整个操作回到你这次取钱操作之前)这个应该说明了原子性的;持久性就是说只要操作成功(提交成功),那么将一直有效。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
单曲循环 发表于 2013-9-11 15:37
首先什么是事务:事务是在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语 ...

亲们,这是我刚刚找到的
事务:是一组不可再分的sql命令组成集合,事务的大小取决于实际的业务需求,是影响数据库的最小单位.
原理:  数据库会为每一个建立的连接(一个连接就是一个用户)维护一个回滚段,用来暂时保存sql命令的结果,保存在回滚段里的数据只有当前连接可以看到,其他连接无法访问, 回滚段里的数据被当前连接锁住,其他用户无法操作,强行操作会进入"锁池"等待,当事务结束时必须对回滚段里的数据做持久化操作(永久保存,永久丢弃)。如果成功向server发送commit指令,server将回滚段的数据永久写进数据库。反之,则向server送rollback指令,server将回滚段数据永久丢弃。

回复 使用道具 举报
白磊 发表于 2013-9-11 15:46
我说说我的理解吧:
首先呢,事务有四个特性,这个我也只能说术语了:原子性、一致性、分离性、持久性 ,至 ...

亲们,这是我刚刚找到的
事务:是一组不可再分的sql命令组成集合,事务的大小取决于实际的业务需求,是影响数据库的最小单位.
原理:  数据库会为每一个建立的连接(一个连接就是一个用户)维护一个回滚段,用来暂时保存sql命令的结果,保存在回滚段里的数据只有当前连接可以看到,其他连接无法访问, 回滚段里的数据被当前连接锁住,其他用户无法操作,强行操作会进入"锁池"等待,当事务结束时必须对回滚段里的数据做持久化操作(永久保存,永久丢弃)。如果成功向server发送commit指令,server将回滚段的数据永久写进数据库。反之,则向server送rollback指令,server将回滚段数据永久丢弃。


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马