- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第12章 SQL Server事务处理机制和并发控制机制 关系数据库的并发性是用来解决多个用户对同一数据进行操作时的问题,特别是对于网络数据库来说,这个特点更加突出。提高数据库的处理速度,单单依靠提高计算机的物理速度是不够的,还必须充分考虑数据库的并发性问题,即提高数据库并发性的效率。因此,为了解决上述问题,在关系数据库中引入了事务和锁机制,通过使用事务和锁机制来解决数据库的并发性问题。 事务和锁是两个紧密联系的概念。事务是一个单元的工作,包括一系列的操作并且这些操作要么全部成功,要么全部失败。事务确保多个数据的修改作为一个单元来处理。SQL Server通过支持事务机制管理多个事务,保证事务的一致性。事务使用锁,防止其他用户修改另外一个还没有完成的事务中的数据。对于多用户系统来说,锁机制是必须的。 也就是说,事务和锁可以确保数据在存储或修改过程中受到其他用户的中断时,能够正确地被存储、修改,而不会造成数据因被存储或修改到一半而导致数据不完整。 * 本章学习要点: 事务处理 事务模式 数据的锁定 * 12.1 事务处理 事务是作为单个逻辑工作单元执行的一系列操作,并且这些操作作为一个整体,要么都做,要么都不做。事务作为一个逻辑单元,必须满足ACID原则,即事务必须具备四个属性: 原子性(Atomic) 一致性(Consistent) 隔离性(Isolated 持久性(Durable) * 12.1.2 事务处理语句 在前面介绍自定义的事务时,提到了与事务处理有关的语句包括BEGIN TRANSACTION、COMMIT TRANSACTION和ROLLBACK TRANSACTION语句。下面对他们进行详细地介绍。 1.BEGIN TRANSACTION语句 2.COMMIT TRANSACTION语句 3.ROLLBACK TRANSACTION语句 12.2 事务模式 应用程序主要通过指定事务启动和结束的时间来控制事务。这可以使用T-SQL语句或数据库API函数。系统还必须能够正确处理那些在事务完成之前便终止事务的错误。事务是在连接层进行管理。当事务在一个连接上启动时,在该连接上执行的所有的T-SQL语句在该事务结束之前都是该事务的一部分。在SQL Serve中,可以按显式事务、自动提交事务或隐性事务模式启动事务。 * 12.2.3 隐性事务 隐性事务是一种连接选项,在该选项下连接执行的每个T-SQL语句都被视为单独的事务。当连接以隐性事务模式进行操作时,SQL Server将在提交或回滚当前事务后自动启动新事务。无须描述事务的开始,只需提交或回滚每个事务,隐性事务模式生成连续的事务链。 1.通过SET IMPLICIT_TRANSACTIONS ON语句设置隐性事务 2.通过API函数设置隐性事务 * 12.3 数据的锁定 锁定是在多用户环境下对资源访问的一种限制机制。当对一个数据源加锁后,此数据源就有了一定的访问限制,即对此数据源进行了锁定。 SQL Server使用锁定确保事务完整性和数据库一致性。锁定可以防止用户读取正在由其他用户更改的数据,并可以防止多个用户同时更改相同数据。如果不使用锁定,则数据库中的数据可能在逻辑上不正确,并且对数据的查询可能会产生意想不到的结果。虽然SQL Server自动强制锁定,但可以通过了解锁定并在应用程序中自定义锁定来设计更有效的应用程序 * 12.3.1 锁定介绍 SQL Server具有多粒度锁定,允许一个事务锁定不同类型的资源。为了使锁定的成本减至最少,SQL Server自动将资源锁定在适合任务的级别。锁定在较小的粒度可以增加并发但需要较大的开销,因为如果锁定了许多行,则需要控制更多的锁。锁定在较大的粒度就并发而言是相当昂贵的,因为锁定整个表限制了其他事务对表中任意部分进行访问,但要求的开销较低,因为需要维护的锁较少。 1.锁定的类别 2.锁的兼容性 * 12.3.2 并发问题 如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。 1.丢失更新 2.未确认的相关性(脏读 3.不一致的分析(非重复读) 4.幻像读 * 12.3.4 自定义锁定 1.自定义锁超时 2.自定义事务隔离级别 3.死锁 4.检测和结束死锁 5.自定义索引的锁定 6.锁定提示 *
文档评论(0)