- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Catherine2015
[年]
实验七 数据库的事务创建与运行实验
一、实验内容
定义三种模式的数据库事务
察看事务的隔离级别
二、实验要求
1、用SQL语句完成以上操作
要求学生独立完成以上内容。
实验完成后完成要求的实验报告内容。
三、实验环境
系统:windows 7
软件:mysql5.6
实验步骤及结果分析
1、定义三种模式的数据库事务
(1)显示事务
显式事务是由设计人员明确定义事务的启动与结束的一种事务。可使用?BEGIN?TRANSACTION、COMMIT?TRANSACTION、COMMIT?WORK、ROLLBACK?TRANSACTION、ROLLBACK?WORK?等语句来定义显式事务。显示事务的特点是要么删除和插入同时成功,要么同时失败.
先创建一个cou练习表。
create table cou as
select * from course;
mysql默认采用autocommit模式运行。故为了创建显式事务,我们需要修改autocommit变量。先查看此变量的默认值?。set autocommit=0;禁止事物自动提交,并创建一个显示事务。
查看表中原始内容,
create table cou as
select * from course;
select* from cou;
执行第一条插入语句并设置回滚点r1:
INSERT INTO cou VALUES(C06,test1,80,2 ,秋);
Savepoint r1;
执行第二个插入语句并设置第二个回滚点:
INSERT INTO cou VALUES(C07,test2,80,2 ,秋);
savepoint r2;
回滚到r1,那么r2自动被丢弃:
直接回滚撤销:
(2)自动提交事务
Mysql默认autocommit模式运行。当运行设置的回滚点是会提示出错:
如图,虽然执行了回滚操作,然而并没什么用。
(3)隐式事务
虽然我们设置自动提交为OFF,但是在事务中如果有create?table,alter,drop?index等等语句,则隐含地结束一个事务,似乎是在执行本语句前,你已经进行了一个commit。?
初始表格:
建立表格te后:
而此时,回滚并没有用,事务已经隐式提交了。
察看事务的隔离级别
SQL标准定义了四种事务的隔离级别:Read Uncommitted(读取未提交内容),Read Committed(读取提交内容),Repeatable Read(可重读)Serializable(可串行化)?
查看系统上表锁定争夺:
查看系统上的行锁的争夺情况:
InnoDB以Oracle的风格,对行级进行锁定,并且默认运行查询作为非锁定持续读。?
查看innodb系统级别的事务隔离级别:
查看innodb会话级别的事务隔离级别:
实验总结
在运行事务设置回滚点之前,注意设置autocommit=0,否则会提示设置的回滚点不存在。
?Repeatable Read(可重读)是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了,
对于事务处理这部分,我了解的很少,大多资源都是从网络上得到的,对于锁,也只是理解了他的作用和理论,并没有进行太多应用,希望今后能更多地了解了。
文档评论(0)