数据库实验报告:事务与并发控制(2)

2020-02-20 15:00

【事务1】读取了数据,【事务2】更改数据,【事务1】再读取数据。【事务1】两次读取都不一样!

(4).幻读 插入

--事务1

SETTRANSACTIONISOLATIONLEVELREADCOMMITTED begintran

selectbalancefromcampus_cardwherestudcardid='20150031' waitfordelay'00:00:05'

selectbalancefromcampus_cardwherestudcardid='20150031' committran

--事务2

SETTRANSACTIONISOLATIONLEVELSERIALIZABLE begintran

insertintocampus_cardvalues('20150031', 30) committran

删除 --事务1

SETTRANSACTIONISOLATIONLEVELREADCOMMITTED begintran

selectbalancefromcampus_cardwherestudcardid='20150031' waitfordelay'00:00:05'

selectbalancefromcampus_cardwherestudcardid='20150031' committran

--事务2

settranisolationlevelrepeatableread begintran

deletefromcampus_cardwherestudcardid='20150031' committran

3. 利用锁机制、数据库的隔离级别等,设计方案分别解决上述丢失修改、读脏数据和

不可重复读(或者幻读)的数据不一致问题。(30分,每种数据不一致10分,提示可以用sp_lock系统存储过程查看当前锁状况) 修改隔离级别以却确定数据的正确性:

丢失修改,在SQL语句前加未提交读:

settranisolationlevelreaduncommitted 读脏数据,在SQL语句前已提交读:

settranisolationlevelreadcommitted 不可重复读,在SQL语句前可重复读:

settranisolationlevelrepeatableread 幻读在SQL语句前加可串行读:

settranisolationlevelserializable

4. 构造一个出现死锁的情形。(10分)

首先将锁的级别改为提交可读

settranisolationlevelreadcommitted

--事务1

begintran declare@readint select@read=grade fromsc

wheresno='95003' waitfordelay'00:00:10' updatesc

setgrade=@read-1 wheresno='95003'

--事务2

begintran declare@readint select@read=grade fromsc

wheresno='95003' updatesc

setgrade=@read-1 wheresno='95003'

5. 利用dbcc log命令查看student数据库的事务日志。(5分)

DBCClog('student',TYPE=2)


数据库实验报告:事务与并发控制(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2020版高考数学(人教版)理科一轮复习课时作业44直线、平面平行

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: