深圳万博培训
     新闻动态
媒体报导
重要通告
学习园地
     OFFICE培训系列
  Excel2003管理高级应用
  Excel2003财务高级应用
  EXCEL中的VBA开发与应用
  ACCESS 2003 设计开发
  OutLook2003高级应用
  PPT2003高级应用
  Office2007中文版
  Project2007培训
  Visio2003图形设计
     国家软考培训系列
  网络工程师(中级职称)
  系统集成项目管理工程师
  网络管理员(初级)
  电子商务技术员(初级)
  信息处理技术员(初级)
  程序员(初级职称)
  数据库系统工程师(中)
  电子商务设计师(中级)
  软件设计师(中级)
     数据库培训
  SQL server 2005数据库
  SQL2000数据库
  Oracle 10g数据库
     1+6网络工程师
  1+6网络工程师
     网络技术(单科)
  软考网络工程师
  Cisco CCNA 认证
  局域网组建和维护
  网络安全
  LINUX网络服务和管理
  Windows2003服务器
     网站运营工程师
  网络营销及网站优化
  网页设计
  photoshopCS3图像处理
  PHP培训课程
  Flash应用与设计
  dreamweaverCS3网页设计
     招生咨询服务
  电话:0755-22205758
     0755-83648016
 

Oracle与SQL Server事务处理的比较


2009年4月23日 作者: 来源:

 事务处理是所有大型数据库产品的一个关键问题,各数据库厂商都在这个方面花费了很大精力,不同的事务处理方式会导致数据库性能和功能上的巨大差异。

  事务处理也是数据库管理员与数据库应用程序开发人员必须深刻理解的一个问题,对这个问题的疏忽可能会导致应用程序逻辑错误以及效率低下。

  下面我们针对OracleSQL Server这两种当前广泛使用的大型数据库产品,探讨一下它们在事务处理方面的一些差异。如没有特殊说明,本文内容适用的数据库产品版本为Oracle9i及SQL Server 2000,其中的示例SQL语句,对于Oracle是在SQL*Plus中执行,而对于SQL Server 2000是在osql中执行。

  一.事务的概念

  事务可以看作是由对数据库的若干操作组成的一个单元,这些操作要么都完成,要么都取消,从而保证数据满足一致性的要求。事务的一个典型例子是银行中的转帐操作,帐户A把一定数量的款项转到帐户B上,这个操作包括两个步骤,一个是从帐户A上把存款减去一定数量,二是在帐户B上把存款加上相同的数量。这两个步骤显然要么都完成,要么都取消,否则银行就会受损失。显然,这个转帐操作中的两个步骤就构成一个事务。

  数据库中的事务还有如下ACID特征。

  ACID分别是四个英文单词的首写字母,这四个英文单词是Atomicity、Consistency、Isolation、Durability,分别翻译为原子性、一致性、隔离性、持久性。

  原子性:指事务中的操作,或者都完成,或者都取消。

  一致性:指事务中的操作保证数据库中的数据不会出现逻辑上不一致的情况,一致性一般会隐含的包括在其他属性之中。

  隔离性:指当前的事务与其他未完成的事务是隔离的。在不同的隔离级别下,事务的读取操作,可以得到的结果是不同的。

  持久性:指对事务发出COMMIT命令后,即使这时发生系统故障,事务的效果也被持久化了。与此相反的是,当在事务执行过程中,系统发生故障,则事务的操作都被回滚,即数据库回到事务开始之前的状态。

  对数据库中的数据修改都是在内存中完成的,这些修改的结果可能已经写到硬盘也可能没有写到硬盘,如果在操作过程中,发生断电或系统错误等故障,数据库可以保证未结束的事务对数据库的数据修改结果即使已经写入磁盘,在下次数据库启动后也会被全部撤销;而对于结束的事务,即使其修改的结果还未写入磁盘,在数据库下次启动后会通过事务日志中的记录进行“重做”,即把丢失的数据修改结果重新生成,并写入磁盘,从而保证结束事务对数据修改的永久化。这样也保证了事务中的操作要么全部完成,要么全部撤销。

[NextPage]

  二.事务设置及类型的区别

  在SQL Server中有三种事务类型,分别是:隐式事务、显式事务、自动提交事务,缺省为自动提交。

  自动提交,是指对于用户发出的每条SQL语句,SQL Server都会自动开始一个事务,并且在执行后自动进行提交操作来完成这个事务,也可以说在这种事务模式下,一个SQL语句就是一个事务。

  显式事务,是指在自动提交模式下以Begin Transaction开始一个事务,以Commit或Rollback结束一个事务,以Commit结束事务是把事务中的修改永久化,即使这时发生断电这样的故障。例如下面是SQL Server中的一个显式事务的例子。

Begin Tran

  Update emp Set ename=’Smith’ Where empno=7369

  Insert Into dept Values(60,’HR’,’GZh’)

  Commit

  隐式事务,是指在当前会话中用Set Implicit_Transactions On命令设置的事务类型,这时任何DML语句(Delete、Update、Insert)都会开始一个事务,而事务的结束也是用Commit或Rollback。

  在Oracle中没有SQL Server的这些事务类型,缺省情况下任何一个DML语句都会开始一个事务,直到用户发出Commit或Rollback操作,这个事务才会结束,这与SQL Server的隐式事务模式相似。



阅读:683 上一则:黑客狙击Oracle系统的八大常用套路 下一则:Google 公开测试 Analytics API:

返回前页 返回顶部
地址:深圳罗湖区笋岗东路3002号万通大厦1311室(帝豪酒店站下) 热线:0755-22205758(罗湖) 0755-83648016(福田)
客服信箱:shizgqh16@163.com 统计报告   版权所有:深圳万博计算机教育  粤ICP备05121393号 design by:eOneStudio
 
欢迎咨询!
您好!我是史老师,很高兴为您在线答疑!
深圳万博史老师
您好!我是吴老师,很高兴为您在线答疑!
深圳万博吴老师