实验11-事务与并发控制
更新时间:2024-05-01 22:53:01 阅读量: 综合文库 文档下载
实验十一 事务与并发控制
实验目的:
通过本次实验了解事务的概念,主要了解事务的ACID特性、处理过程。在Oracle中设置事务的隔性层事务处理语句,锁对数据库的并发控制的影响。 实验要求:
对事务进行commit和rollback的操作 设置事务隔离层
存储点 (savepoint)
表锁和行锁(锁的粒度影响并发能力) 查询锁的信息(V$LOCK, V$LOCKED_OBJECT)
实验环境: Oralce 10g 实验步骤:
分别使用scott和sys登录数据库, 分别查询scott模式中的表:salgrade scott的操作: sys的操作: update salgrade set losal = 500 where grade = 1; delete salgrade where grade = 3
查询表salgrade,会发现
数据没有变化。
commit; 或disconn
或使用任何ddl语句
查询表salgrade,会发现 数据已经变化变化。 从中体会Oracle对数据库的操作是隐含事务的开始,而结束是以commit、rollback、
disconn或使用任何DDL语句。
SQL SERVER的事务操作默认是每一语句都是一个事务,如果多个SQL操作的话,要用begin transaction表示事务开始,之后是SQL操作,结束事务时要使用commit或rollback命令。 dd
设置事务隔离层
事务隔离层表示事务之间的隔离程度或影响程度,Oracle默认的事务隔离层是read committed,同学们在第一个实验已经体会到,只有递交的数据才能被查询到。 设置会话的事务隔离层为串行:
set transaction isolation level serializable;
或alter session set isolation_level = serializable; 在scott中执行该语句,查询salgrade 在sys中: update scott.salgrade
set losal = 10 where grade = 1;
commit;
在scott中再次查询salgrade,发现结果还是一样,说明事务隔离层serializable设置后,事务与事务被隔离开。
要查询sys更改的数据,必须结束当前事务后,恢复默认read committed 或重新设置事务隔
离层。
存储点 (Savepoint) 在scott中进行操作:
update salgrade set losal = 0 where grade = 1; insert into salgrade values(8,8000,8888); savepoint cns; select * from salgrade;
insert into salgrade values (9,9000,9999); rollback to cns;
select * from salgrade;
在尝试没有没有savepoint的操作,体会savepoint的作用:对较长的事务处理过程中,由于各种意外的可能发生,造成事务的回滚,从而浪费了大量的资源,如果使用了存储点,则事务回滚到指定的一个存储点,该存储点之前的事务依然有效,注意,这时候事务依然没有结束。
(表级)共享锁 (S – Share)
LOCK TABLE EMP IN SHARE MODE;
其他用户只能看,不能修改,能加所有共享锁。 (表级)排他锁 (X – Exclusive) 其他用户只能看,不能修改,不能加其他锁。 在scott中操作:
lock table salgrade in exclusive mode; update salgrade set losal = 10 where grade=1; 在sys中执行操作:
update salgrade set losal = 202 where grade=2;
这个操作一直在等待,一直等到scott将salgrade中的锁释放:commit,rollback; 行级共享锁(RS – Row Share)
允许用户进行任何操作,禁止排他锁。 在scott中操作:
lock table salgrade in row share mode;
分别使用scott和sys重复上面的操作,体会锁的粒度与并发处理能力之间的关系。 行级排他锁(RX – Row Exclusive)
允许用户进行任何操作,禁止共享锁和共享行级排他锁。 共享行级排他锁
只允许其他事务加行级共享锁。
LOCK TABLE DEPT IN SHARE ROW EXCLUSIVE MODE; 不允许其他事务修改。
查询锁的信息(V$LOCK, V$LOCKED_OBJECT) Scott是没有权限对这些数据字典进行查询! 锁的总结:
一、共享锁:用于读数据操作; 二、排他锁:独占表;
三、共享行级排他所:兼容性最好,并发能力最高! 四、行级排他锁:与共享锁和共享行级排他锁不兼容。
五、共享行级排它锁只与行级共享锁兼容,不允许其他事务更新。
只有当前的事务结束,才能解锁!
正在阅读:
实验11-事务与并发控制05-01
令我激动的一件事作文700字06-30
“十三五”重点项目-水产品加工项目可行性研究报告 - 图文07-05
LTE高级试卷 - 图文11-14
2019年中考语文考点分析与备考指导03-28
计算机网络夜大2013年A卷000000000000000(1)03-18
母亲节作文450字07-08
田园作文400字07-08
GCT复习资料---逻辑学06-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 并发
- 事务
- 实验
- 控制
- 11