数据库原理与应用教程―SQLServer.ppt
《数据库原理与应用教程―SQLServer.ppt》由会员分享,可在线阅读,更多相关《数据库原理与应用教程―SQLServer.ppt(60页珍藏版)》请在三一办公上搜索。
1、数据库原理与应用教程SQL Server,第12章事务与并发控制,第12章 事务与并发控制,关系型数据库有四个显著的特征,即完整性安全性监测性并发性完整性是数据库的一个重要特征,也是保证数据库中的数据切实有效、防止错误、实现商业规则的一种重要机制。在SQL Server中,数据的完整性是通过一系列逻辑来保障的,这些逻辑分为三个方面,即实体完整性、域完整性和参考完整性。,第12章 事务与并发控制,数据库的安全性就是要保证数据库中数据的安全,防止未授权用户随意修改数据库中的数据,确保数据的安全。在大多数数据库管理系统中,主要是通过许可来保证数据库的安全性。监测性:对任何系统都可以这样说,没有监测,
2、就没有优化。这句话用在数据库管理系统方面,也是切合实际的。只有通过对数据库进行全面的性能监测,也才能发现影响系统性能的因素和瓶颈,才能针对瓶颈因素,采取切合实际策略,解决问题,提高系统的性能。,第12章 事务与并发控制,并发性:数据库是一个共享资源,可以供多个用户使用。这些用户程序可以一个一个地串行执行,每个时刻只有一个用户程序运行,执行对数据库的存取,其他用户程序必须等到这个用户程序结束以后方能对数据库存取。但是如果一个用户程序涉及大量数据的输入、输出交换,则数据库系统的大部分时间处于闲置状态。为了充分利用数据库资源,发挥数据库共享资源的特点,应该允许多个用户并行地存取数据库。但这样就会产生
3、多个用户程序并发存取同一数据的情况,若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性,所以数据库管理系统必须提供并发控制机制。,第12章 事务与并发控制,并发控制机制的好坏是衡量一个数据库管理系统性能的重要标志之一。SQL Server以事务为单位通常使用锁来实现并发控制。当用户对数据库并发访问时,为了确保事务完整性和数据库一致性,需要使用锁定。这样,就可以保证任何时候都可以有多个正在运行的用户程序,但是所有用户程序都在彼此完全隔离的环境中运行。,第12章 事务与并发控制,12.1事务概述事务处理是数据库的主要工作,事务由一系列的数据操作组成,是数据库应用程序的基本逻辑单
4、元,用来保证数据的一致性。SQL Server 2005 提供了几种自动的可以通过编程来完成的机制,包括事务日志、SQL事务控制语句,以及事务处理运行过程中通过锁定保证数据完整性的机制。事务和存储过程类似,由一系列T-SQL语句组成,是 SQL Server 2005系统的执行单元。在数据库处理数据的时候,有一些操作是不可分割的整体。例如,当用银行卡消费的时候首先要在账户扣除资金,然后再添加资金到公司的户头上。在这个过程中用户所进行的实际操作可以理解成不可分割的,不能只扣除不添加,当然也不能只添加不扣除。,第12章 事务与并发控制,12.1事务概述利用事务可以解决上面的问题,即把这些操作放在一
5、个容器里,强制用户执行完所有的操作或者不执行任何一条语句。事务就是作为单个逻辑工作单元执行的一系列操作,这一系列的操作或者都被执行或者都不被执行。在SQL Server 2005中,事务要求处理时必须满足四个原则,即原子性、一致性、隔离性和持久性。,第12章 事务与并发控制,12.1事务概述(1)原子性:事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行。这一性质即使在系统崩溃之后仍能得到保证,在系统崩溃之后将进行数据库恢复,用来恢复和撤销系统崩溃处于活动状态的事务对数据库的影响,从而保证事务的原子性。系统对磁盘上的任何实际数据的修改之前都会将修改操作信息本身的信息记录到磁盘
6、上。当发生崩溃时,系统能根据这些操作记录当时该事务处于何种状态,以此确定是撤销该事务所做出的所有修改操作,还是将修改的操作重新执行。,第12章 事务与并发控制,12.1事务概述(2)一致性:一致性要求事务执行完成后,将数据库从一个一致状态转变到另一个一致状态。即在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性,事务结束时,所有的内部数据结构都必须是正确的。例如在转账的操作中,各账户金额必须平衡,这一条规则对于程序员而言是一个强制的规定,由此可见,一致性与原子性是密切相关的。事务的一致性属性要求事务在并发执行的情况下事务的一致性仍然满足。它在逻辑上不是独立的,它由事务的隔离
7、性来表示。,第12章 事务与并发控制,12.1事务概述(3)隔离性:也称为独立性,是指并行事务的修改必须与其他并行事务的修改相互独立。隔离性意味着一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。它要求即使有多个事务并发执行,看上去每个成功事务按串行调度执行一样。,第12章 事务与并发控制,12.1事务概述(4)持久性:在事务完成提交之后,就对系统产生持久的影响,即事务的操作将写入数据库中,无论发生何种机器和系统故障都不应该对其有任何影响。例如,自动柜员机(ATM)在向客户支付一笔钱时,就不用担心丢失客户的取款记录。
8、事务的持久性保证事务对数据库的影响是持久的,即使系统崩溃。,第12章 事务与并发控制,12.2 事务的类型根据事务的系统设置和运行模式的不同,SQL Server 2005将事务分为多种类型。12.2.1根据系统的设置分类根据系统的设置,SQL Server 2005将事务分为两种类型:系统提供的事务和用户定义的事务。,第12章 事务与并发控制,12.2.1根据系统的设置分类1.系统事务系统提供的事务是指在执行某些语句时,一条语句就是一个事务。但是要明确,一条语句的对象既可能是表中的一行数据,也可能是表中的多行数据,甚至是表中的全部数据。因此,只有一条语句构成的事务也可能包含了多行数据的处理。
9、,系统提供的事务语句如下:ALTER TABLE、CREATE、DELETE、DROP、FETCH、GRANT、INSERT、OPEN、REBOKE、SELECT、UPDATE、TRUNCATE TABLE,这些语句本身就构成了一个事务。,第12章 事务与并发控制,12.2.1根据系统的设置分类1.系统事务例12-1使用CREATE TABLE创建一个表。CREATE TABLE student(Id CHAR(10),Name CHAR(6),Sex CHAR(2)这条语句本身就构成了一个事务。这条语句由于没有使用条件限制,那么这条语句就是创建包含3个列的表。要么创建全部成功,要么全部失败。
10、,第12章 事务与并发控制,12.2.1根据系统的设置分类2.用户定义事务在实际应用中,大多数的事务处理采用了用户定义的事务来处理。在开发应用程序时,可以使用BEGIN TRANSACTION语句来定义明确的用户定义的事务。在使用用户定义的事务时,一定要注意事务必须有明确的结束语句来结束。如果不使用明确的结束语句来结束,那么系统可能把从事务开始到用户关闭连接之间的全部操作都作为一个事务来对待。事务的明确结束可以使用两个语句中的一个:COMMIT语句和ROLLBACK语句。COMMIT语句是提交语句,将全部完成的语句明确地提交到数据库中。ROLLBACK语句是取消语句,该语句将事务的操作全部取消
11、,即表示事务操作失败。,第12章 事务与并发控制,12.2.2根据运行模式分类根据运行模式的不同,SQL Server 2005将事务分为4种类型:显示事务、隐式事务、自动提交事务和批处理级事务。1自动提交事务自动提交事务是指每条单独的T-SQL语句都是一个事务。如果没有通过任何T-SQL语句设置事务,一条T-SQL语句就是一个事务,语句执行完事务就结束。以前我们使用的每一条T-SQL语句都可以叫做一个自动提交事务。,第12章 事务与并发控制,12.2.2根据运行模式分类2显式事务显式事务指每个事务均以BEGIN TRANSACTION语句、COMMIT TRANSACTION或ROLLBAC
12、K TRANSACTION语句明确地定义了什么时候启动事务、什么时候结束事务的事务。3隐式事务隐式事务指在前一个事务完成时新事务隐式启动,但每个事务仍以COMMIT TRANSACTION或ROLLBACK TRANSACTION语句显式结束。4批处理级事务批处理级事务是SQL Server 2005的新增功能,该事务只能应用于多个活动结果集(MARS),在MARS会话中启动的T-SQL显式或隐式事务变为批处理级事务。,第12章 事务与并发控制,12.3事务处理语句 所有的T-SQL语句本身都是内在的事务。另外,SQL Server中有专门的事务处理语句,这些语句将SQL 语句集合分组后形成单
13、个的逻辑工作单元。事务处理的T-SQL语句包括:(1)定义一个事务的开始:BEGIN TRANSACTTCN;(2)提交一个事务:COMMIT TRANSACTION;(3)回滚事务:ROLLBACK TRANSACTION;(4)在事务内设置保存点:SAVE TRANSACTION。,第12章 事务与并发控制,12.3事务处理语句1BEGIN TRANSACTION语句BEGIN TRANSACTION语句定义一个显式本地事务的起始点,即事务的开始。其语法格式为:BEGIN TRAN|TRANSACTION transaction_name|tran_name_variable WITH M
14、ARK description其中:(1)TRANSACTION关键字可以缩写为TRAN。(2)transaction name是给事务分配的名称,事务可以定义名称,也可以不定义名称,但是只能使用符合标识符规则的名字。(3)tran_name_variable是含有效事务名称的变量的名称,必须用数据类型声明这个变量。(4)WITH MARK用于指定在日志中标记事务,description是描述该标记的字符串。,第12章 事务与并发控制,12.3事务处理语句2.COMMIT TRANSACTION语句 COMMIT TRANSACTION语句为提交一个事务,标志一个成功的隐式事务或显式事务的结束
15、。其语法格式为:COMMIT TRAN|TRANSACTION transaction_name|tran_name_variable 对于COMMIT TRANSACTION语句需要注意以下几点:(1)因为数据已经永久修改,所以在COMMIT TRANSACTION语句后不能回滚事务。(2)在嵌套事务中使用COMMIT TRANSACTION时,内部事务的提交并不释放资源,也没有执行永久修改,只有在提交了外部事务时,数据修改才具有永久性而且资源才会被释放。,第12章 事务与并发控制,12.3事务处理语句3.ROLLBACK TRANSACTION语句ROLLBACK TRANSACTION语
16、句将显式事务或隐式事务回滚到事务的起点或事务内的某个保存点,它也标志一个事务的结束。其语法格式为:ROLLBACK TRAN|TRANSACTION transaction_name|tran_name_variable|savepoint_name|savepoint_variable 对于ROLLBACK TRANSACTION语句需要注意以下几点:(1)如果不指定回滚的事务名称或保存点,则ROLLBACK TRANSACTION命令会将事务回滚到事务的起点。,(2)在嵌套事务时,该语句将所有内层事务回滚到最远的BEGIN TRANSACTION语句,transaction_name也只能
17、是来自最远的BEGIN TRANSACTION语句的名称。(3)在执行COMMIT TRANSACTION语句后不能回滚事务。(4)如果在触发器中发出ROLLBACK TRANSACITON命令,将回滚对当前事务中所做的所有数据修改,包括触发器所做的修改。(5)事务在执行过程中出现任何错误,SQL Server都将自动回滚事务。,第12章 事务与并发控制,12.3事务处理语句4.SAVE TRANSACTION语句SAVE TRANSACTION语句用于在事务内设置保存点。其语法格式为:SAVE TRAN|TRANSACTION savepoint_name|savepoint_variabl
18、e 在事务内的某个位置建立一个保存点,使用户可以将事务回滚到该保存点的状态,而不回滚整个事务。,第12章 事务与并发控制,12.3事务处理语句使用事务时应注意以下几点:(1)不是所有的T-SQL语句都能放在事务里,通常insert、update、delete、select等可以放在事务里,创建、删除、恢复数据库等不能放在事务里。(2)事务要尽量的小,而且一个事务占用的资源越少越好。(3)如果事务在事务中间发生了错误,并不是所有情况都会回滚,只有达到一定的错误级别才会回滚,可以在事务中使用err变量查看是否发生了错误。,第12章 事务与并发控制,12.3事务处理语句例12-2定义一个事务,将所有
19、选修了c001号课程的学生的分数加5分,并提交该事务。DECLARE t_name CHAR(10)SET t_name=add_scoreBEGIN TRANSACTION t_nameUSE 教学库UPDATE 选课SET 成绩=成绩+5WHERE 课程号=C001COMMIT TRANSACTION t_name,第12章 事务与并发控制,12.3事务处理语句例12-3定义一个事务,向教学库的学生表中插入一行数据,然后再删除该行。执行后,新插入的数据行并没有被删除。BEGIN TRANSACTION USE 教学库INSERT INTO 学生(学生号,姓名,性别,专业)VALUES(05
20、01001,朱一虹,女,计算机)SAVE TRAN savepointDELETE FROM 学生WHERE 姓名=朱一虹ROLLBACK TRAN savepointCOMMIT,第12章 事务与并发控制,12.3事务处理语句例12-4定义一个事务,向仓库库存数据库的商品表中插入一行数据,如果插入成功,则向库存情况表中插入一行或多行此商品的库存情况信息,并显示“添加成功”;如果插入失败则不向库存情况表中插入数据,并显示“添加失败”。BEGIN TRANSACTION USE 仓库库存INSERT INTO 商品(商品编号,商品名称,单价,生产商)VALUES(bx-159,冰箱,2500,安
21、徽美菱)IF error=0 BEGIN INSERT INTO 库存情况(仓库编号,商品编号,数量)VALUES(002,bx-159,20)PRINT 添加成功!COMMIT ENDELSE BEGIN PRINT 添加失败!ROLLBACKEND,第12章 事务与并发控制,12.4 事务的并发控制并发控制指的是当多个用户同时更新行时,用于保护数据库完整性的各种技术,目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 教程 SQLServer
链接地址:https://www.31ppt.com/p-5353309.html