北邮 大三下 数据库实验七 mysql版本

北邮 大三下 数据库实验七 mysql版本

ID:47421858

大小:1.37 MB

页数:14页

时间:2019-09-13

北邮 大三下 数据库实验七 mysql版本_第1页
北邮 大三下 数据库实验七 mysql版本_第2页
北邮 大三下 数据库实验七 mysql版本_第3页
北邮 大三下 数据库实验七 mysql版本_第4页
北邮 大三下 数据库实验七 mysql版本_第5页
资源描述:

《北邮 大三下 数据库实验七 mysql版本》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、09211311班实验报告学院:计算机学院课程名称:数据库系统实验名称:实验七数据库的事务创建与运行实验班级:2009211311姓名:schnee学号:09211311班实验七数据库的事务创建与运行实验1.实验目的通过实验,了解mysql数据库系统中各类数据库事务的定义机制和基于锁的并发控制机制,掌握mysql数据库系统的事务控制机制。2.实验环境操作系统:MicrosoftWindows7旗舰版(32位)。软件:数据库版本:MySQL5.53.实验内容及过程3.1.定义三种模式的数据库事务事务是由相关操作构成

2、的一个完整的操作单元。两次连续成功的COMMIT或ROLLBACK之间的操作,称为一个事务。对数据库所做的一系列修改,在修改过程中,暂时不写入数据库,而是缓存起来,用户在自己的终端可以预览变化,直到全部修改完成,并经过检查确认无误后,一次性提交并写入数据库,在提交之前,必要的话所做的修改都可以取消。提交之后,就不能撤销,提交成功后其他用户才可以通过查询浏览数据的变化。事务的特点ACID:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。一

3、个有效的事务处理系统必须满足相关标准。l原子性:一个事务必须被视为一个单独的内部“不可分”的工作单元,以确保整个事务要么全部执行,要么全部回滚。l一致性:数据库总是从一种一致性状态转换到另一种一致性状态。l隔离性:某个事务的结果只有在完成之后才对其他事务可见。在上述例子中,当数据库执行完insert语句,还未执行delete语句时,如果此时另一个客户端对数据库的访问也同时运行,它将仍视符合条件的记录在b表中。l持久性:一旦一个事务提交,事务所做的数据改变将是永久的。3.1.1.显式事务显式事务,由用户指定,允许用

4、户决定哪批工作必须成功完成,否则所有部分都不完成。操作包括starttransaction,rollback,commit。我们先创建一个innodb类型表格course2,其实可以直接对course操作的。在此只是为了练一练innodb的一些操作。09211311班mysql默认采用autocommit模式运行。故为了创建显式事务,我们需要修改autocommit变量。先查看此变量的默认值修改变量autocommit,禁止自动提交,并创建一个显式事务。执行第一条插入语句并设置第一个回滚点p1。执行第二个插入语句

5、并设置第二个回滚点p2。09211311班回滚到p1,则p2自动被丢弃。回滚到原始点,即事务开始的点。发现操作都被回滚。显式事务执行成功。显式事务即事务没有自动提交,可以回滚到原始点,在rollback和commit之前对数据库的修改都可以挽回,而不是永久写入。1.1.1.自动提交事务mysql默认采用autocommit模式运行。这意味着,当您执行一个用于更新(修改)表的语句之后,MySQL立刻把更新存储到磁盘中。默认级别为不可重复读。设置自动提交为ON。按照3.1.1.操作,发现rollbacktop1出错,

6、虽然设置保存点成功,但是实际上每一个语句已经自动提交了,也就是说已经永久写入了。所以事务无法回滚。09211311班1.1.1.隐式事务虽然我们设置自动提交为OFF,但是在事务中如果有createtable,alterfunciton,dropindex等等语句,则隐含地结束一个事务,似乎是在执行本语句前,你已经进行了一个commit。如下图所示,createtable就隐含了一个事务的结束。正是这个隐式事务导致了回滚的失败。虽然rollback执行看似成功,但是实际却没能发挥作用。因为隐式事务已经无法挽回。09

7、211311班1.1.查看事务的锁信息和隔离级别1.1.1.查看事务的锁信息查看系统上表锁定争夺:查看系统上的行锁的争夺情况:InnoDB以Oracle的风格,对行级进行锁定,并且默认运行查询作为非锁定持续读。由于感兴趣,所以下面对innodb的行锁定做个小测验。我们对innodb引擎的表A进行i=1的行锁定。09211311班再另开一个数据库访问B,并且在B中也开始一个事务,对i=1行进行操作。但是由于i=1行已经被锁定,所以只有先执行的A端commit后,B端才能执行事务。当A为提交时,B只能等待,若是等待过

8、久,则会超时。1.1.1.查看事务的隔离级别查看innodb系统级别的事务隔离级别:查看innodb会话级别的事务隔离级别:1.1.2.学习并试验事务的四种隔离级别(非实验要求内容)SQL标准定义了4类隔离级别。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。lReadUncommitted(读取未提交内容):在该隔离级别,所有事务都可以看到其他未提交事务的执

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

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

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