数据库中的事务处理概念及其应用
一 什么是事务
事务是由相关操作构成的一个完整的操作单元。两次连续成功的COMMIT或ROLLBACK之间的操作,称为一个事务。在一个事务内,数据的修改一起提交或撤销,如果发生故障或系统错误,整个事务也会自动撤销。
比如,我们去银行转账,操作可以分为下面两个环节:
(1) 从第一个账户划出款项。
(2) 将款项存入第二个账户。
在这个过程中,两个环节是关联的。第一个账户划出款项必须保证正确的存入第二个账户,如果第二个环节没有完成,整个的过程都应该取消,否则就会发生丢失款项的问题。整个交易过程,可以看作是一个事物,成功则全部成功,失败则需要全部撤消,这样可以避免当操作的中间环节出现问题时,产生数据不一致的问题。
一个事务是由一个可执行的SQL语句开始,一个可执行SQL语句产生对实例的调用。在事务开始时,被赋给一个可用回滚段,记录该事务的回滚项。一个事务以下列任何一个出现而结束。数据库事务是一个逻辑上的划分,有的时候并不是很明显,它可以是一个操作步骤,也可以是多个操作步骤。
我们可以这样理解数据库事物:对数据库所做的一系列修改,在修改过程中,暂时不写入数据库,而是缓存起来,用户在自己的终端可以预览变化,直到全部修改完成,并经过检查确认无误后,一次性提交并写入数据库,在提交之前,必要的话所做的修改都可以取消。提交之后,就不能撤销,提交成功后其他用户才可以通过查询浏览数据的变化。
以事务的方式对数据库进行访问,有如下的优点:
* 把逻辑相关的操作分成了一个组。
* 在数据永久改变前,可以预览数据变化。
* 能够保证数据的读一致性。
二 数据库事务的应用
数据库事务处理可分为隐式和显式两种。显式事务操作通过命令实现,隐式事务由系统自动完成提交或撤销(回退)工作,无需用户的干预。
隐式提交的情况包括:当用户正常退出SQL*Plus或执行CREATE、DROP、GRANT、REVOKE等命令时会发生事务的自动提交。
还有一种情况,如果把系统的环境变量AUTOCOMMIT设置为ON(默认状态为OFF),则每当执行一条INSERT、DELETE或UPDATE命令对数据进行修改后,就会马上自动提交。设置命令格式如下:
SET AUTOCOMMIT ON/OFF
隐式回退的情况包括:当异常结束SQL*Plus或系统故障发生时,会发生事务的自动回退。
显式事务处理的数据库事务操作语句有3条,分别是COMMIT,ROLLBACK,SAVEPOINT语句。
COMMIT是数据库事物提交,将变化写入数据库。此操作把多个步骤对数据库的修改,一次性地永久写入数据库,代表数据库事务的成功执行。ROLLBACK是数据库事务回退,撤销对数据库的修改。操作在发生问题时,把对数据库已经作出的修改撤消,回退到修改前的状态。在操作过程中,一旦发生问题,如果还没有提交操作,则随时可以使用ROLLBACK来撤消前面的操作。SAVEPOINT则用于在事务中间建立一些保存点,ROLLBACK可以使操作回退到这些点撤上边,而不必撤销全部的操作。一旦COMMIT完成,就不能用ROLLBACK来取消已经提交的操作。一旦ROLLBACK完成,被撤消的操作要重做,必须重新执行相关操作语句。
如何开始一个新的事务呢?一般情况下,开始一个会话(即连接数据库),执行第一条SQL语句将开始一个新的事务,或执行COMMIT提交或ROLLBACK撤销事务,也标志新的事务的开始。另外,执行DDL(如CREATE)或DCL命令也将自动提交前一个事务而开始一个新的事务。
数据在修改的时候会对记录进行锁定,其他会话不能对锁定的记录进行修改或加锁,只有当前会话提交或撤销后,记录的锁定才会释放。
例如修改雇员SCOTT的工资,工资在原有基础上增加1000:
UPDATE emp SET sal=sal+1000 WHERE empno=7788;
执行结果:
已更新 1 行。
显示修改后SCOTT的工资:
SELECT ename,sal FROM emp WHERE empno=7788;
执行结果:
ENAME SAL
SCOTT 4000
经查看修改结果正确,提交所做的修改:
COMMIT;
执行结果:
提交完成。
在执行COMMIT后,工资的修改被永久写入数据库。本训练的第1步,先使用COMMIT命令提交原来的操作,同时标志一个新的事务的开始。注意:在事务执行过程中,随时可以预览数据的变化。对于比较大的事务,可以使用SAVEPOINT命令在事务中间划分一些断点,用来作为回退点。(IT专家网)
- 12012年云计算服务支出将达420亿美元
- 2BI(商业智能)实施服务比BI工具重要
- 3分析:虚拟化技术给企业应用带来的优势
- 4网络管理员谈十四条保护路由器的办法
- 5OA办公系统实现企业 “仁义礼智信”
- 6美国联邦政府如何保护互联网安全?
- 7数据库高效管理应当破除迷信
- 8详解Java语言的内存泄漏
- 9数据丢失防护 企业何去何从?
- 10企业应为HPC系统选择哪一操作系统
- 11快速增强路由器安全的十个小技巧
- 12以太网将成为数据中心唯一网络技术
- 13企业部署虚拟化前要想清楚的十大问题
- 14企业节能技术之重复数据删除技术
- 15中小企业服务器虚拟化应用成本分析
- 16网络管理技巧进阶:如何管理实时通信软件
- 17企业协同四层理论组成了一个协同金字塔
- 18太阳、风、海藻:未来数据中心的能源
- 19虚拟机数量增加将加大系统安全风险
- 20中小企业应如何着手服务器虚拟化部署
- 21HPC TOP 500榜单的启示:新时代的开始
- 22为什么SaaS可以令IT技能无关紧要
- 23如何理解虚拟私有云VPC?
- 24让存储虚拟化更智能的五大步骤
- 25云计算是创新了技术还是创新了营销
- 26分支机构网络管理影响企业的IP电话管理
- 27CIO不得不面对的数据中心四大变革
- 28解决服务器安全问题的七个技巧
- 29企业从Unix迁移到Linux真有必要吗
- 30如何高效管理企业的基础应用服务?