- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库原理与运用之事务控制与并发处理
第13章 事务控制与并发处理
13.1 事物概述
数据库系统是面向多用户的。一个基本问题是,多个用户同时访问数据库的情况下如何保证数据的一致性和有效性?事务控制与并发处理为此类问题的解决提供了一种有效的途径。
事务是数据库并发控制技术涉及的基本概念,是并发控制的基本单位。
13.1.1什么是事务
事务(Transaction)是指作为单个逻辑工作单元执行的一系列数据库操作。一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行。遇到错误时,可以回滚事务,取消事务内所做的所有改变,从而保证数据库中数据的一致性和可恢复性。
例如:对于银行转帐问题,将帐号A1上的金额x转入帐号A2。如何保证帐号信息的是正确的?
13.1.2 事务的特性
一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
原子性(Atomicity):
事务是数据库操作的逻辑工作单位。就操作而言,事务中的操作是一个整体,不能再被分割,要么全部成功执行,要么全部不成功执行。
一致性(Consistency):
事务一致性是指事务执行前后都能够保持数据库状态的一致性,即事务的执行结果是将数据库从一个一致性状态变到另一个一致性状态。
隔离性(Isolation):
隔离性是指多个事务在执行时不互相干扰。事务具有隔离性意味着一个事务的内部操作即其使用的数据库对其他事务是不透明的,其他事务不会干扰这些操作和数据。
持续性 (Durability) :
指事务一旦提交,则其对数据库中数据的改变就应该是永久的,即使是出现系统故障等问题。
事务开始之后,事务所有的操作都陆续写到事务日志中。这些任务操作在事务日志中记录一个标志,用于表示执行了这种操作,当取消这种事务时,系统自动执行这种操作的反操作,保证系统的一致性。系统自动生成一个检查点机制,这个检查点周期地发生。检查点的周期是系统根据用户定义的时间间隔和系统活动的频度由系统自动计算出来的时间间隔。检查点周期地检查事务日志,如果在事务日志中,事务全部完成,那么检查点将事务提交到数据库中,并且在事务日志中做一个检查点提交标记。如果在事务日志中,事务没有完成,那么检查点将事务日志中的事务不提交到数据库中,并且在事务日志中做一个检查点未提交标记。
13.1.3 事务和批的差别
编程时,一定要区分事务和批的差别:
批是一组整体编译的SQL语句,事务是一组作为单个逻辑工作单元执行的SQL语句。
批语句的组合发生在编译时刻,事务中语句的组合发生在执行时刻。
当在编译时,批中某个语句存在语法错误,系统将取消整个批中所有语句执行,而在运行时刻,如果事务中某个数据修改违反约束、规则等,系统默认只回退到产生该错误的语句。
如果批中产生一个运行时错误,系统默认只回退到产生该错误的语句。但当打开XACT_ABORT选项为ON时,可以系统自动回滚产生该错误的当前事务。一个事务中也可以拥有多个批,一个批里可以有多个SQL语句组成的事务,事务内批的多少不影响事务的提交或回滚操作。
13.1.4 事务的类型
根据事务的设置、用途的不同,SQL Server 2005将事务分为多种类型。
根据系统的设置分类
根据系统的设置,SQL Server 2005将事务分为两种类型:系统提供的事务和用户定义的事务,分别简称为系统事务和用户定义事务。
系统事务
系统提供的事务是指在执行某些语句时,一条语句就是一个事务。但是要明确,一条语句的对象既可能是表中的一行数据,也可能是表中的多行数据,甚至是表中的全部数据。
因此,只有一条语句构成的事务也可能包含了多行数据的处理。
系统提供的事务语句如下:
ALTER TABLE 、CREATE、DELETE、DROP、FETCH、GRANT、INSERT、OPEN、REBOKE、SELECT、UPDATE、TRUNCATE TABLE
这些语句本身就构成了一个事务。
【例1】使用CREATE TABLE创建一个表。
CREATE TABLE student
(id CHAR(10),
name CHAR(6),
sex CHAR(2)
)
说明:这条语句本身就构成了一个事务。这条语句由于没有使用条件限制,那么这条语句就是创建包含3个列的表。要么创建全部成功,要么全部失败。
用户定义事务
在实际应用中,大多数的事务处理采用了用户定义的事务来处理。在开发应用程序时,可以使用BEGIN TRANSACTION语句来定义明确的用户定义的事务。在使用用户定义的事务时,一定要注意事务必须有明确的结束语句来结束。如果不使用明确的结束语句来结束,那么系统可能把从事务开始到用户关闭连接
您可能关注的文档
最近下载
- 2021届北京市海淀高三语文一模阅读部分讲评 课件(150张PPT).pptx
- 背负式风力灭火机的操作与使用 .ppt VIP
- 苏州七年级月考试卷及答案.doc VIP
- 山东科学技术版劳动实践指导手册三年级第11课公益劳动与志愿服务校园公益劳动清洁美化校园我行动 教案.docx VIP
- 2025年中级审计师测试题习题.docx VIP
- 一、毕业设计(论文)的目的和意义.doc VIP
- 四川大学软件学院2008级毕业设计启动会课程设计.ppt VIP
- 2025全科医生考试题及答案.docx VIP
- 大班科学标准教案小油滴不见了.pptx VIP
- 2024年隆昌市兴诚投资集团有限公司人员招聘考试题库及答案解析.docx VIP
文档评论(0)