网站大量收购独家精品文档,联系QQ:2885784924

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

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告学院:计算机学院课程名称:数据库系统实验名称:实验七数据库的事务创建与运行实验班级: 2009211311 姓名:schnee学号:实验七数据库的事务创建与运行实验实验目的通过实验,了解mysql数据库系统中各类数据库事务的定义机制和基于锁的并发控制机制,掌握mysql数据库系统的事务控制机制。实验环境操作系统:Microsoft Windows 7旗舰版(32位)。软件:数据库版本:MySQL 5.5 实验内容及过程定义三种模式的数据库事务事务是由相关操作构成的一个完整的操作单元。两次连续成功的COMMIT或ROLLBACK之间的操作,称为一个事务。对数据库所做的一系列修改,在修改过程中,暂时不写入数据库,而是缓存起来,用户在自己的终端可以预览变化,直到全部修改完成,并经过检查确认无误后,一次性提交并写入数据库,在提交之前,必要的话所做的修改都可以取消。提交之后,就不能撤销,提交成功后其他用户才可以通过查询浏览数据的变化。事务的特点ACID:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。一个有效的事务处理系统必须满足相关标准。原子性:一个事务必须被视为一个单独的内部“不可分”的工作单元,以确保整个事务要么全部执行,要么全部回滚。一致性:数据库总是从一种一致性状态转换到另一种一致性状态。隔离性:某个事务的结果只有在完成之后才对其他事务可见。在上述例子中,当数据库执行完insert语句,还未执行delete语句时,如果此时另一个客户端对数据库的访问也同时运行,它将仍视符合条件的记录在b表中。持久性:一旦一个事务提交,事务所做的数据改变将是永久的。显式事务显式事务,由用户指定,允许用户决定哪批工作必须成功完成,否则所有部分都不完成。操作包括start transaction, rollback, commit。我们先创建一个innodb类型表格course2,其实可以直接对course操作的。在此只是为了练一练innodb的一些操作。mysql默认采用autocommit模式运行。故为了创建显式事务,我们需要修改autocommit变量。先查看此变量的默认值修改变量autocommit,禁止自动提交,并创建一个显式事务。执行第一条插入语句并设置第一个回滚点p1。执行第二个插入语句并设置第二个回滚点p2。回滚到p1,则p2自动被丢弃。回滚到原始点,即事务开始的点。发现操作都被回滚。显式事务执行成功。显式事务即事务没有自动提交,可以回滚到原始点,在rollback和commit之前对数据库的修改都可以挽回,而不是永久写入。自动提交事务mysql默认采用autocommit模式运行。这意味着,当您执行一个用于更新(修改)表的语句之后,MySQL立刻把更新存储到磁盘中。默认级别为不可重复读。设置自动提交为ON。按照3.1.1.操作,发现rollback to p1出错,虽然设置保存点成功,但是实际上每一个语句已经自动提交了,也就是说已经永久写入了。所以事务无法回滚。隐式事务虽然我们设置自动提交为OFF,但是在事务中如果有create table,alter funciton,drop index等等语句,则隐含地结束一个事务,似乎是在执行本语句前,你已经进行了一个commit。如下图所示,create table就隐含了一个事务的结束。正是这个隐式事务导致了回滚的失败。虽然rollback执行看似成功,但是实际却没能发挥作用。因为隐式事务已经无法挽回。查看事务的锁信息和隔离级别查看事务的锁信息查看系统上表锁定争夺:查看系统上的行锁的争夺情况:InnoDB以Oracle的风格,对行级进行锁定,并且默认运行查询作为非锁定持续读。由于感兴趣,所以下面对innodb的行锁定做个小测验。我们对innodb引擎的表A进行i=1的行锁定。再另开一个数据库访问B,并且在B中也开始一个事务,对i=1行进行操作。但是由于i=1行已经被锁定,所以只有先执行的A 端commit后,B端才能执行事务。当A为提交时,B只能等待,若是等待过久,则会超时。查看事务的隔离级别查看innodb系统级别的事务隔离级别:查看innodb会话级别的事务隔离级别:学习并试验事务的四种隔离级别(非实验要求内容)SQL标准定义了4类隔离级别。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。Read Uncommitted(读取未提交内容):在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。Read Committed(读取提交内容):这是大多数数据库系

文档评论(0)

tuihaodaozhuang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档