14-事务与锁(L)1

14-事务与锁(L)1

ID:37487593

大小:970.82 KB

页数:25页

时间:2019-05-24

14-事务与锁(L)1_第1页
14-事务与锁(L)1_第2页
14-事务与锁(L)1_第3页
14-事务与锁(L)1_第4页
14-事务与锁(L)1_第5页
资源描述:

《14-事务与锁(L)1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、事务与锁事务与锁数据库管理数据库管理本次课知识点的作用理解并初步理解事务和锁本次课教学目标与重难点本次课教学目标与重难点教学目标会用事务和锁来管理批量的SQL数据处理教学重难点重点:事务、锁出现的原因难点:事务和死锁的处理事务•例:要进行货物调拨,把指定仓库中的一定数量的商品调拨到另一个仓库中。•问:(如何确保这个操作一定可以一起完成)自定义事务自定义事务可以设置多个程序操作必须全部执行成功,否则立即答复到未执行任何程序操作的状态是一个逻辑工作单元,单元中包含一批操作具有ACID四个性质原子性:不可只完成部分操作一致性:在处理成功后

2、,所有数据都保持一致状态独立性:禁止其它事务看到本事务的中间状态持久性:一个已完成的事务对数据所作的任何变动在系统中是永久有效的事务实现方式事务实现方式实现方式:BeginTransaction[事务名]开始事务CommitTransaction[事务名]结束事务SaveTransaction保存点名RollbackTransaction[保存点名]回滚事务注:如果回滚到保存点,则并不结束事务@@trancount存储当前的事务数量回复改变•问:如有下列操作系列,结果会如何begintransactionupdatestudents

3、etcphone=‘12345678’wheresid=‘A00001’updatestudentsetcname=‘aaa’wheresid=‘A00001’rollbacktransaction回复改变•例:如果在调拨过程中要求记载例:如果在调拨过程中要求记载下来调拨信息,若发现被调货的下来调拨信息,若发现被调货的仓库的库存不够,则整个操作全仓库的库存不够,则整个操作全部取消部取消事务的类型•显示事务:由用户指定事务的开始和结束•自动事务:每个语句视为一个事务•隐式事务:开始执行语句就视为一个事务的开始,但语句执行完后,事务并不

4、结束(由用户显示提交)•setimplicit_transactions{on

5、off}提交事务演示数据并行问题•所谓数据并行的问题就是指当所谓数据并行的问题就是指当数据同进进事务处理时所发生数据同进进事务处理时所发生的问题。的问题。数据并行问题•1、遗失更新:当两个或多个事务基于原先所选值试图修改同一行时,事务队列中最后的更新会重写前面事务所作的修改•资源A=100事务A事务BreadAreadAupdateA+50writeAupdateA+10writeA数据并行问题•2、无效读入、无效读入:一个事务读取了:一个事务读取了尚未

6、认可的更新数据尚未认可的更新数据资源A=100事务A事务BreadAupdateA+50readAwriteAupdateA+10rollbackwriteA数据并行问题•3、不一致分析、不一致分析:指事务连续两次指事务连续两次读取数据时,所得到的数据不一读取数据时,所得到的数据不一致致资源A=100事务A事务BreadAupdateA+50readAupdateA+10readAwriteA数据并行问题•4、幻象读取:读取到了并不存在的数据资源A=100事务A事务BreadAupdateA+50createBreadAreadBd

7、elBupdateB+80writeB锁的概念•解决方法:锁•在功能上避免用户访问正在被其它用户改变的信息,在多用户环境中,避免一些用户同时改变同样的数据•SQLServer使用锁来维护多用户环境下的数据的一致性,SQLServer自动处理锁的行为锁的范围•Server实现了多粒度上锁,允许事务以不同级别对不同类型的资源上锁•行级•页级•范围•表级锁的模式•共享锁定(S):常用于读事务(如SELECT语句),允许一个资源上有多个共享锁定,防止其它事务修改资源•排它锁定(X):用于写事务(如INSERT、UPDATE、DELETE语句

8、)一个资源上只能有一个排它锁定,防止并发事务对资源进行访问�更新锁定(U):用于防止死锁,一个资源上只能有一个更新锁定,且只有获得更新锁定的事务才能获得排它锁定�意向锁定(I):让事务声明它将在资源上使用共享、独占、更新锁定�模式锁定(S):1、结构模式修改锁定�2、结构描述固定锁定Demo例:用户A用户BBegintransactionbegintransactionupdatestudentupdateclasssetcclassid=‘c0002’setiperson=iperson+1select*fromclasswher

9、ecclassid=‘c0001’Committransactionselect*fromstudentcommittransaction若这两个事务共时提交会产生什么情况死锁TRANSACTIONATRANSACTIONBStude

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。