SQL Server 2005基础教程 作者 978-7-302-14848-7 ch13.pptVIP

  • 1
  • 0
  • 约2.66千字
  • 约 19页
  • 2015-12-13 发布于广东
  • 举报

SQL Server 2005基础教程 作者 978-7-302-14848-7 ch13.ppt

第13章 事务 教学目标 并发性的概念和并发性问题的特点 事务的概念、类型和特点 事务管理技术 理解锁的作用 掌握定制锁技术 掌握查看和理解锁信息技术 教学过程 13.1 概述 13.2 事务的特点、类型和管理 13.3 使用锁 13.1 概述 在Microsoft SQL Server 2005系统中,解决并发性问题采取了事务和锁机制。 事务和锁是两个紧密联系的概念。事务就是一个单元的工作,包括一系列的操作,这些操作要么全部成功,要么全部失败。 锁就是保护指定的资源,不被其他事务操作。 13.2 事务的特点、类型和管理 事务是Microsoft SQL Server系统的重要特征,一方面保证了系统的备份和恢复,另一方面实现了数据一致性机制。 下面将详细描述事务的概念、工作原理、事务的类型等内容。 事务的概念 事务是指一个单元的工作。作为一个逻辑单元,它必须具备4个属性: 自动性 一致性 独立性 持久性 事务的工作原理 事务确保数据的一致性和可恢复性。事务开始之后,事务所有的操作都陆续写到事务日志中。 系统自动生成一个检查点机制,这个检查点周期地发生。检查点的周期是系统根据用户定义的时间间隔和系统活动的频度由系统自动计算出来的时间间隔。 检查点周期地检查事务日志,如果在事务日志中事务全部完成,那么检查点将事务日志中的该事务提交到数据库中,并且在事务日志中做一个检查点提交标记。如果在事务日志中事务没有完成,那么检查点将事务日志中的该事务不提交到数据库中,并且在事务日志中做一个检查点未提交标记。 使用事务时的考虑 在使用事务时,原则上应该使事务尽可能短并且要避免事务嵌套。事务应该尽可能短,这是因为比较长的事务增加了事务占用数据的时间,使其他必须等待访问该事务锁定数据的事务延长了等待访问数据的时间。 在使用事务时,为了使事务尽可能短,应该采取一些相应的方法。 事务的类型 根据系统的设置,可以把事务分成两种类型。一种是系统提供的事务,另一种是用户定义的事务。系统提供的事务是指在执行某些语句时,一条语句就是一个事务。这时要知道,一条语句的对象既可能是表中的一行数据,也可能是表中的多行数据,甚至是表中的全部数据。因此,只有一条语句构成的事务也可能包含了对多行数据的处理。 管理事务 BEGIN TRANSACTION BEGIN DISTRIBUTED TRANSACTION COMMIT TRANSACTION ROLLBACK TRANSACTION SAVE TRANSACTION SET IMPLICIT_TRANSACTION 13.3 使用锁 锁是实现事务的手段。 实际上锁是保护事务和数据的方式,这种保护方式类似于日常生活中使用的锁。 下面介绍Microsoft SQL Server系统中锁的特点。 锁的概念 锁就是防止其他事务访问指定资源的手段。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。 一般来说,锁可以防止脏读、不可重复读和幻觉读。 SQL Server的空间特点 在Microsoft SQL Server系统中,最小的空间管理单位是页,一个页有8K。所有的数据、日志、索引都存放在页上。另外,使用页还有一个限制,这就是表中的一行数据必须在同一个页上,不能跨页。页上面的空间管理单位是Extent,一个Extent是8个连续的页。表和索引的最小占用单位是Extent。数据库是由一个或多个表或索引组成的,即是由多个Extent组成。 可以锁定的资源 在Microsoft SQL Server中可以锁定的资源有多种,这些可以锁定的资源分别是行、页、Extent、表和数据库,他们对应的锁分别是行级锁、页级锁、Extent级锁、表级锁和数据库级锁。数据行存放在页上,页存放在Extent上,一个表有若干个Extent组成,而若干个表组成了数据库。 在这些可以锁定的资源中,最基本的资源是行、页和表,而Extent和数据库是特殊的可以锁定的资源。 锁的类型和其兼容性 锁定资源的方式有两种基本形式,一种形式是读操作要求的共享锁,另一种形式是写操作要求的排它锁。除了这两种基本类型的所,还有一些特殊情况的锁,例如意图锁、修改锁和模式锁。在这些各种类型的锁中,某些类型的锁之间是可以兼容的,但多数类型的锁之间是不兼容的。 死锁问题 在事务和锁的使用过程中,死锁是一个不可避免的现象。在两种情况下发生死锁。第一种情况是当两个事务分别锁定了两个单独的对象,这时每一个事务都要求在另外一个事务锁定的对象上获得一个锁,因此每一个事务都必须等待另外一个事务释放占有的锁,这时就发生了死锁。这种是最典型的死锁形式。 死锁的第二种情况是当在一个数据库中时,有若干个长时间

文档评论(0)

1亿VIP精品文档

相关文档