SQLServer2012数据库应用与开发教程(第三版)课件作者卫琳主编模块8事务 锁和游标.pptVIP

SQLServer2012数据库应用与开发教程(第三版)课件作者卫琳主编模块8事务 锁和游标.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
use test go declare @游标变量 cursor set @游标变量=cursor for select sname,scomegrade from student open @游标变量 declare @xm varchar(8),@rxcj smallint fetch next from @游标变量 into @xm,@rxcj while @@FETCH_STATUS =0 begin print @xm+ +convert(char(3),@rxcj) fetch next from @游标变量 into @xm,@rxcj end close @游标变量 deallocate @游标变量 示例:使用游标变量打开student表,并显示所有学生姓名及入学成绩 6.使用order by子句改变游标中行的顺序 示例:使用游标变量打开student表,并显示所有学生姓名及入学成绩,按成绩降序显示。 use test go declare @游标变量 cursor set @游标变量=cursor for select sname,scomegrade from student order by scomegrade desc open @游标变量 declare @xm varchar(8),@rxcj smallint fetch next from @游标变量 into @xm,@rxcj while @@FETCH_STATUS =0 begin if LEN(@xm)=3 print @xm+ +convert(char(3),@rxcj) else print @xm+ +convert(char(3),@rxcj) fetch next from @游标变量 into @xm,@rxcj end close @游标变量 deallocate @游标变量 8.2.7 使用事务时的考虑 在使用事务时,用户不可以随意定义事务,它有一些考虑和限制。 1. 事务应该尽可能短 2. 避免事务嵌套 任务8.3 锁 8.3.1 事务的缺陷 为了提高系统效率、满足实际应用的要求,系统允许多个事务并发执行,即允许多个用户同时对数据库的操作。但由于并发事务对数据的操作不同,可能会带来丢失更新、脏读、不可重复读和幻读等数据不一致的问题: 1. 丢失更新(lose update) 2. 脏读(dirty read) 3. 不可重复读(unrepeateable read) 4. 幻读 (Phantom Read) 8.3.2 锁的概念 在单用户数据库中,由于只有一个用户修改信息,不会产生数据不一致的情况,因此并不需要锁。当允许多个用户同时访问和修改数据时,就需要使用锁来防止对同一个数据的并发修改,避免产生丢失更新、脏读、不可重复读和幻像读等问题。 锁(lock)的基本原则是允许一个事务更新数据,当必须回滚所有修改时,能够确信在第一个事务修改完数据之后,没有其他事务在数据上进行过修改。即锁提供了事务的隔离性。 8.3.3 隔离性的级别 1. 隔离的级别 (1)未提交读(read uncommitted) (2)已提交读(read committed) (3)可重复读(repeateable read) (4)可串行读(serializable) (5)快照(snapshot)和已提交读快照(read committed snapshot) 2. 隔离级别的选择 选择用于事务的适当隔离级别是非常重要的。由于获取和释放锁所需的资源因隔离级别不同而不同,因此隔离级别不仅影响数据库的并发性实现,而且还影响包含该事务的应用程序的整体性能。 通常,使用的隔离级别越严格,要获取并占有的资源就更多,因而对并发性提供的支持就越少,而整体性能也会越低。 3. 隔离级别的设定 尽管隔离级别是为事务锁定资源服务的,但隔离级别是在应用程序级别指定的。当没有指定隔离级别时,系统缺省地使用“游标稳定性”隔离级别。 对于嵌入式SQL应用程序,隔离级别在预编译或将应用程序绑定到数据库时指定。 大多数情况下,隔离级别是用受支持的编译语言(如C或C++)编写,通过 PRECOMPILE PROGRAM、BIND命令或API的ISOLATION选项来设置。 8.3.4 锁的空间管理及粒度 锁可以防止事务的并发问题,在多个事务访问下能够保证数据库完整性和一致性。 1.锁定 锁是防止其他事务访问指定的资源控制、实现并发控制的一种主要手段。封锁是指一个事务在对某个数据对象操作之前,先向系统提出请求,对其加锁,在事务结束之后释放锁。在事务释放

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档