好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[理学]第13章事务、批、锁和作业.ppt

41页
  • 卖家[上传人]:油条
  • 文档编号:49726151
  • 上传时间:2018-08-01
  • 文档格式:PPT
  • 文档大小:988KB
  • / 41 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第13章事务、批 、锁和作业河北工程大学 信电学院 崔冬数据库原理与应用SQL Server 2005第13章事务、批、锁和作业 v 事务是一个逻辑工作单元,SQL Server 2005 提供了几种自动的可以通过编程来完成的机制,包括事务日志、SQL事务控制语句,以及事务处理运行过程中通过锁定保证数据完整性的机制当用户对数据库并发访问时,为了确保事务完整性和数据库一致性,需要使用锁定事务和锁是两个紧密联系的概念v 通过事务、批和锁的使用,还可以监测系统,以及优化物理数据库v 作业是一种多步执行的任务v 本章主要介绍 SQL Server 2005数据库系统的事务和锁的基本概念,事务、批、锁的创建和使用,通过事务、批、锁监测系统和优化物理数据库的操作,以及作业的设置13.1事务 v事务和存储过程类似,由一系列T-SQL语句组成,是 SQL Server 2005系统的执行单元本节主要介绍 SQL Server 2005中事务的概念,以及事务的创建、使用13.1.1事务概述• 关系型数据库有4个显著的特征,及安全性、完整性、检测 性和并发性数据库的安全性就是要保证数据库数据的安 全,防止未授权用户随意修改数据库中的数据,确保数据 的安全。

      完整性是数据库的一个重要特征,也是保证数据 库中的数据切实有效、防止错误、实现商业规则的一种重 要机制在数据库中,区别所保存的数据是无用的垃圾还 是有价值的信息,主要是依据数据库的完整性是否健全, 即实体完整性、域完整性和参考完整性对任何发现影响 系统性能的因素和瓶颈,才能针对瓶颈因素,采取切合实 际策略,解决问题,提高系统的性能并发性是用来解决 多个用户对同一数据进行操作时的问题特别是对于网络 数据库来说,这个特点更加突出提高数据库的处理速度 ,单单依靠提高计算机的物理速度是不够的,还必须充分 考虑数据库的并发性问题,提高数据库并发性的效率13.1.1事务概述那么如何保证并发性呢?在 SQL Server 2005中,通过使用事务 和锁机制,可以解决数据库的并发性问题在 SQL Server 2005中,事务要求处理时必须满足ACID原则,即 原子性(A)、一致性(C)、隔离性(I)和持久性(D)§ 原子性 原子性也称为自动性,是指事务必须执行一个完整的工作,要么 执行全部数据的操作,要么全部不执行§ 一致性 一致性是指当事务完成时,必须所有的数据具有一致的状态 § 隔离性 隔离性也城为独立性,是指并行事务的修改必须与其他并 行事务的修改相互独立。

      一个事务处理数据,要么是其他事务执 行之前的状态,要么是其他事务执行之后的状态但不能处理其 他正在处理的数据 13.1.1事务概述§ 持久性 持久性是指当一个事务完成之后,将影响永久性地存于系统中,即 事务的操作将写入数据库中 事务的这种机制保证了一个事务或者提交后成功执行,或者提交后 失败回滚,二者必居其一,因此,事务对数据的修改具有可恢复 性,即当事务失败时,它对数据的修改都会恢复到该事务执行前 的状态而使用一般的批处理,则有可能出现有的语句被执行, 而另一些语句没有被执行的情况,从而有可能造成数据不一致 事务开始之后,事务所有的操作都陆续写到事务日志中这些任务 操作在事务日志中记录一个标志,用于表示执行了这种操作,当 取消这种事务时,系统自动执行这种操作的反操作,保证系统的 一直性系统自动生成一个检查点机制,这个检查点周期地发生 检查点的周期是系统根据用户定义的时间间隔和系统活动的频 度由系统自动计算出来的时间间隔检查点周期地检查事物日志 ,如果在事务日志中,事务全部完成,那么检查点将事务提交到 数据库中,并且在事务日志中做一个检查点提交标记如果在事 务日志中,事务没有完成,那么检查点将事务日志中的事务不提 交到数据库中,并且在事务日志中做一个检查点未提交标记。

      13.1.2事务的类型v根据事务的设置、用途的不同,SQL Server 2005将事务分为多种类型 § 根据系统的设置分类根据系统的设置,SQL Server 2005将事务分为两种类型: 系统提供的事务和用户定义的事务,分别简称为系统事务 和用户定义事务 (1)系统事务 系统提供的事务是指在执行某些语句时,一条语句就是一个事 务但这是要明确,一条语句的对象既可能是表中的一行数 据,也可能是表中的多行数据,甚至是表中的全部数据 因此,只有一条语句构成的事务也可能包含了多行数据的处理 系统提供的事务语句如下:13.1.2事务的类型ALTER TABLE 、CREATE、DELETE、DROP、FETCH、 GRANT、INSERT、OPEN、REBOKE、SELECT、 UPDATE、TRUNCATE TABLE 这些语句本身就构成了一个事务 [例13-1]使用CREATE TABLE创建一个表CREATE TABLE student(id CHAR(10),name CHAR(6),sex CHAR(2) ) 说明:这条语句本身就构成了一个事务这条语句由于没有使 用条件限制,那么这条语句就是创建包含3个列的表。

      要么创 建全部成功,要么全部失败 (2)用户定义事务 在实际应用中,大多数的事务处理采用了用户定义的事务来处 理在开发应用程序时,可以使用BEGIN TRANSACTION 语句来定义明确的用户定义的事务 13.1.2事务的类型在使用用户定义的事务时,一定要注意事务必须有明确的结束 语句来结束如果不使用明确的结束语句来结束,那么系统 可能把从事务开始到用户关闭连接之间的全部操作都作为一 个事务来对待事务的明确结束可以使用两个语句中的一个 :COMMIT语句和ROLLBACK语句COMMIT语句是提 交语句,将全部完成的语句明确地提交到数据库中 ROLLBACK语句是取消语句,该语句将事务的操作全部取 消,即表示事务操作失败 还有一种特殊的用户定义的事务,这就是分布式事务例12-1 事务是在一个服务器上的操作,其保证的数据完整性和一致 性是指一个服务器上的完整性和一致性但是,如果一个比 较复杂的环境,可能有多台服务器,那么要保证在多台服务 器环境中事务的完整性和一致性,就必须定义一个分布式事 务在这个分布式事务中,所有的操作都可以涉及对多个服 务器的操作,当这些操作都成功时,那么所有这些操作都提 交到相应服务器的数据库中,如果这些操作中有一条操作失 败,那么这个分布式事务中的全部操作都将被取消。

      13.1.2事务的类型v 根据运行模式分类v 根据运行模式,SQL Server 2005将事务分为4种类型:自动提交事务、显 示事务、隐式事务和批处理级事务§ (1)自动提交事务 自动提交事务是指每条单独的语句都是一个事务§ (2)显式事务 显式事务指每个事务均以BEGIN TRANSACTION语句显式开始,以COMMIT或ROLLBACK语句显示结束§ (3)隐式事务 隐式事务指在前一个事务完成时新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK语句显式完成§ (4)批处理级事务 该事务只能应用于多个活动结果集(MARS),在MARS会话中启动的T-SQL显式或隐式事务变为批处理级事务当批处理完成时,没有提交或回滚的批处理几事务自动由SQL Server语句集合分组后形成单个的逻辑工作单元事务处理语句包括: 13.1.2事务的类型BEGIN TRANSAVTION语句 COMMIT TRANSACTION语句 ROLLBACK TRANSACTION语句 SAVE TRANSACTION语句 1.BEGIN TRANSECTION 语句BEGIN TRANSACTION 语句定义一个显式本地事务的起点,即事务的开始 。

      其语法格式为: 1.BEGIN {TRAN|TRANSACTION} [{transaction_name |@tran_name_variable} {WITH MARK[‘description’]}] [;] 说明: 1、TRANSACTION关键字可以缩写TRAN2、Transaction_name是事务名,@TRAN_NAME_variable是用户定义 的、含有效事务名称的变量,该变量必须是字符数据类型3、WITH MARK指定在日志中标记事务,description是描述该标记 的字符串13.1.2事务的类型2、COMMIT TRANSACTION 语句 COMMIT TRANSACTION语句标志一个成功的隐式事务或显 式事务的结束其语法格式为: COMMIT{TRAN|TRANSACTION} [transaction_name|@tran_name_variable]][;] 说明:仅当事务被引用所有数据的逻辑都正确时,T-SQL语句 才应发出COMMIT TRANSACTION 命令当在嵌套事务中使 用时,内部事务的提交并不释放资源或使其修改成为永久修 改。

      只有在提交了外部事务时,数据修改才具有永久性,而 且资源才会被释放当@@TRANCOUNT 大于1时,每发一 个CMMIT TRANSACTION 命令只会使@@TRANCOUNT 按1递减当@@TRANCOUNTY 最终递减为0时,将提交整 个外部事务3.ROLLBACK TRANSACTION 语句 ROLLBACK TRANSACTION 语句将显示事务或隐藏事务 的起点或事务内的某个保存点,它也标志一个事务的结束 其语法格式如下: 13.1.2事务的类型ROLLBACK {TRAN|TRANSACTION} [transaction_name|@tran_name_variable|savepoint_name|@sav epoint_variable] [;] 说明:ROLLBACK TRANSACTION 清除自事务的起点或到 某个保存点所有数据修改它还释放由事务控制的资源 Savepoint_name是SAVE TRANSACTION 语句中的 savepoint_name当条件回滚应只影响事务的一部分时,可 于使用savepoint_name@savepoint_variable是用户定义的、包含有效保存点名 称的变量的名称,必须是字符数据类型。

      4.SAVE TRANSACTION语句 SAVE TRANSACTION语句在事务内设置保存点其语法格式 为: SAVE {TRAN }|TRANSACTION]{savepoint_name|@savepoint_variable}[;]13.1.2事务的类型说明:用户可以在事务内设置保存点或标记保存点可以定义在按条 件取消某个事务的一部分后,该事务可以返回的一个位置如果将 事务回滚到保存点,则根据需要必须完成其他剩余的T-SQR 语句和 COMMIT TRANSACTION 语句,或者必须通过将事务回滚到起始 点完全取消事务若要取消整个事务,请用ROLLBACK TRANSACTION transaction_name 语句这将撤消事务的所有语 句和过程Savepoint_name是分配给保存点的名称 @savepoint_variable包含有效保存点名称的用户定义变量的名称 [例13—2] 定义一个事务,将所有选修了3号课程的学生的分数加10分 ,并提交该事务 DECLARE @t_name CHAR(10) SET @t_name=’add_score’ BEGIN TRANSACTION@t_name UPDATE成绩表 SET 分数=分数+10 WHERE 课程号=3 GO COMMIT TRANSACTION @t_name GO 13.1.2事务的类型说明:本例使用 BEGIN TRANSATION 定义了一个事务名为 add_score的事务,之后使用COMMI。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.