数据库原理与应用教程―sqlserv1

上传人:xiao****1972 文档编号:73419173 上传时间:2019-01-25 格式:PPT 页数:60 大小:1.60MB
返回 下载 相关 举报
数据库原理与应用教程―sqlserv1_第1页
第1页 / 共60页
数据库原理与应用教程―sqlserv1_第2页
第2页 / 共60页
数据库原理与应用教程―sqlserv1_第3页
第3页 / 共60页
数据库原理与应用教程―sqlserv1_第4页
第4页 / 共60页
数据库原理与应用教程―sqlserv1_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《数据库原理与应用教程―sqlserv1》由会员分享,可在线阅读,更多相关《数据库原理与应用教程―sqlserv1(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) ) 这条语句本身就构成了一个事务。 这条语

10、句由于没有使用条件限制,那么这条语句就是创建包含3个列的表。要么创建全部成功,要么全部失败。,第12章 事务与并发控制,12.2.1根据系统的设置分类 2.用户定义事务 在实际应用中,大多数的事务处理采用了用户定义的事务来处理。在开发应用程序时,可以使用BEGIN TRANSACTION语句来定义明确的用户定义的事务。在使用用户定义的事务时,一定要注意事务必须有明确的结束语句来结束。如果不使用明确的结束语句来结束,那么系统可能把从事务开始到用户关闭连接之间的全部操作都作为一个事务来对待。事务的明确结束可以使用两个语句中的一个:COMMIT语句和ROLLBACK语句。COMMIT语句是提交语句,

11、将全部完成的语句明确地提交到数据库中。ROLLBACK语句是取消语句,该语句将事务的操作全部取消,即表示事务操作失败。,第12章 事务与并发控制,12.2.2根据运行模式分类 根据运行模式的不同,SQL Server 2005将事务分为4种类型:显示事务、隐式事务、自动提交事务和批处理级事务。 1自动提交事务 自动提交事务是指每条单独的T-SQL语句都是一个事务。如果没有通过任何T-SQL语句设置事务,一条T-SQL语句就是一个事务,语句执行完事务就结束。以前我们使用的每一条T-SQL语句都可以叫做一个自动提交事务。,第12章 事务与并发控制,12.2.2根据运行模式分类 2显式事务 显式事务

12、指每个事务均以BEGIN TRANSACTION语句、COMMIT TRANSACTION或ROLLBACK TRANSACTION语句明确地定义了什么时候启动事务、什么时候结束事务的事务。 3隐式事务 隐式事务指在前一个事务完成时新事务隐式启动,但每个事务仍以COMMIT TRANSACTION或ROLLBACK TRANSACTION语句显式结束。 4批处理级事务 批处理级事务是SQL Server 2005的新增功能,该事务只能应用于多个活动结果集(MARS),在MARS会话中启动的T-SQL显式或隐式事务变为批处理级事务。,第12章 事务与并发控制,12.3事务处理语句 所有的T-SQ

13、L语句本身都是内在的事务。另外,SQL Server中有专门的事务处理语句,这些语句将SQL 语句集合分组后形成单个的逻辑工作单元。事务处理的T-SQL语句包括: (1)定义一个事务的开始:BEGIN TRANSACTTCN ; (2)提交一个事务:COMMIT TRANSACTION; (3)回滚事务:ROLLBACK TRANSACTION; (4)在事务内设置保存点:SAVE TRANSACTION。,第12章 事务与并发控制,12.3事务处理语句 1BEGIN TRANSACTION语句 BEGIN TRANSACTION语句定义一个显式本地事务的起始点,即事务的开始。其语法格式为:

14、BEGIN TRAN | TRANSACTION transaction_name | tran_name_variable WITH MARK description 其中: (1)TRANSACTION关键字可以缩写为TRAN。 (2)transaction name是给事务分配的名称,事务可以定义名称,也可以不定义名称,但是只能使用符合标识符规则的名字。 (3)tran_name_variable是含有效事务名称的变量的名称,必须用数据类型声明这个变量。 (4)WITH MARK用于指定在日志中标记事务,description是描述该标记的字符串。,第12章 事务与并发控制,12.3事务

15、处理语句 2. COMMIT TRANSACTION语句 COMMIT TRANSACTION语句为提交一个事务,标志一个成功的隐式事务或显式事务的结束。其语法格式为: COMMIT TRAN | TRANSACTION transaction_name | tran_name_variable 对于COMMIT TRANSACTION语句需要注意以下几点: (1)因为数据已经永久修改,所以在COMMIT TRANSACTION语句后不能回滚事务。 (2)在嵌套事务中使用COMMIT TRANSACTION时,内部事务的提交并不释放资源,也没有执行永久修改,只有在提交了外部事务时,数据修改才具

16、有永久性而且资源才会被释放。,第12章 事务与并发控制,12.3事务处理语句 3. ROLLBACK TRANSACTION语句 ROLLBACK TRANSACTION语句将显式事务或隐式事务回滚到事务的起点或事务内的某个保存点,它也标志一个事务的结束。其语法格式为: ROLLBACK TRAN | TRANSACTION transaction_name | tran_name_variable | savepoint_name | savepoint_variable 对于ROLLBACK TRANSACTION语句需要注意以下几点: (1)如果不指定回滚的事务名称或保存点,则ROLLBACK TRANSACTION命令会将事务回滚到事务的起点。,(2)在嵌套事务时,该语句将所有内层事务回滚到最远的BEGIN TRANSACTION语句,transaction_name也只能是来自最远的BEGIN TRANSACTION语句的名称。 (3)在执行COMMIT TRANS

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号