《MySQL数据原理与应用》实验报告实验11事务处理.docx
实验11事务处理实验目的令了解存储引擎的相关知识;令熟悉事务的基本概念;令掌握事务的AClD特性和状态;令掌握如何使用事务,设置事务的隔离级别。要求:所有操作结果均以截图的形式保存,截取的图上尽可能的出现自己的个人信息。实验设备PC机一台;Win7/10操作系统;MySQL8.0、Navicat>Workbench0【实验报告提交】在完成本实验文档要求的所有任务后,加上版权(水印),将文件以“学号姓名+实验11事务处理”命名,并转换成PDF文件,提交至超星平台本课程对应的作业文件夹中。实验任务任务1演示提交与回滚操作任务2演示读未提交操作任务3演示读已提交操作任务4演示可重复读操作任务5实验过程中常见错误解决方法实验流程任务1演示提交与回滚操作【任务需求】往“tb_department”数据表中插入一行数据,进行提交(COMMlT)操作;继续往数据表中插入一行数据,进行回滚(ROLLBACK)操作。首先使用“db_study”数据库,执行“BEGIN;”语句开启一个事务。往“tb_department”数据表中插入一行数据,最后执行“COMMIT;”语句进行提交操作。执行"BEGIN;”语句开启一个事务。往“tb_department”数据表中插入一行数据,最后执行“ROLLBACK;”语句进行回滚操作【任务参考效果图】mysql>USEdb_study;Databasechangedmysql>BEGIN;QueryOK,0rowsaffected(0.00sec)mysql>IINSERTINTOtb_department->VALUES('X09','人工智能学院',87471238,'1栋教学楼');Query0K"1rowaffected(0.OUsec)-mysql>COMMIT;QueryOK,0rowsaffected(0.00sec)mysql>rBEGIN?Query0K,0rowsaffected(0.00sec)mysql>INSERTINTOtb_department->VALUES('X10','马克思学院',87471239,T3栋教学楼');QueryOK,Trowaffected(0.00sec)一mysql>ROLLBACK;QueryUK,0rowsaffected(0.00sec)【任务完成效果图】请按照任务需求将完成的效果图放在下方。任务2演示读未提交操作【任务需求】将两个会话SessionASessionB设置隔离级别为读未提交(READUNCOMMITTED),并在两个会话中开启事务,首先在SessionA会话中将titb_department,数据表中department_name(学院名称)计算机学院的department_address(学院地址)的值修改5栋教学楼,并且不进行COMMn'提交操作,此时SessionB会话中需要查看到已修改的数据。【任务参考效果图】Administrator:CmeLeXe-myql-urtpSeSSiOnA-口SessionBmysql>SELECT*FROMtb-department;Idepartment_iddepartment-nameIdepartment-PhOneIdepartment_addressXOl_嬲融工程学院874712311X0287471232X0387471233X04874712347隹,幸黄3楼X05874712357栋教学楼6楼X06874712356栋教学楼4楼X07874712366栋教学楼5楼X08人又与睡学院87471236行政楼X09874712381栋教学楼9rowsinset(O.00sec)AdminiMratoccmdeKemyqlMoOtpmysql>USEdb_study;Databasechangedmysql>STARTTRANSACTION;QueryOK,Orowsaffected(O.OOsec)mysql>SELECT*FROMtb-department;一一T4_二卜d卜department_idddepartment_name卜<department_phoneIjdepartment-address1xiWII874712315株教学楼:智替制造与电气工程学院874712329栋教学楼X03建筑工程学院874712338栋教学楼X04工商管理学院874712347栋教学楼3楼X05经济管理学院874712357栋教学楼6楼X06外国语学院874712356栋教学楼4楼X07艺术设计学院874712366栋教学楼5楼X08人文与教育学院87471236行政楼X091人工智能学院I187471238I11栋教学楼I9rowsinSet(O.OOSeC)【任务完成效果图】请按照任务需求将完成的效果图放在下方。任务3演示读已提交操作【任务需求】将两个会话SeSSiOnA、SeSSionB设置隔离级别为读已提交(READCOMMITTED),并在两个会话中开启事务,首先在SessionA会话中将“tb_department”数据表中departmcnt_name(学院名称)艺术设计学院department_address(学院地址)的值修改6栋教学楼6楼,并进行COMMIT提交操作。在SessionA会话进行COMMIT提交操作前,SeSSionB会话中不能查看到已修改的数据,只有当SeSSionA会话进行COMMIT提交操作后,SessionB会话中才能查看到已修改的数据。SessionA【任务参考效果图】SaIAdministratorcmd.e×e-mysql-urt-pmysql>SELECT*FROMtb-department;I department-id department_nameIdepartment_phonedepartmenJaddreSS123456789OooooooooXxxxxxxxx院与学学学院学育学 学造程理理学计教能 机制工管管语设与智 算能筑商济国术文.工 计智建工经外艺人人电院院院院学院874712318747123287471233874712348747123587471235874712368747123687471238楼舞舞Il楼一m.蝴8w776n.9rowsinset(O.OOsec)mysql>CONMITSessionBQueryOK,(Trowsaffected(0.OOsec)AdminiMrdtoccmd.exemysql-vrootpmysql>SELECT*FROMtb_department:I department_id department_namedepartment-PhOnedepartment_address123456789Ooooooooo Xxxxxxxxx电院院院院学院 院与学学学院学育学 学造程理理学计教能 机制工管管语设与智 算能筑商济国术文工 计智建工经外艺人人874712318747123287471233874712348747123587471235874712368747123687471238信息楼9栋教学楼8栋教学楼7栋教学楼3楼7栋教学楼6楼6株教学楼4楼6栋教学楼6楼 行政楼1栋教学楼9rowsinset(O.OOsec)【任务完成效果图】请按照任务需求将完成的效果图放在下方。任务4演示可重复读操作【任务需求】将两个会话SessionA.SessionB设置隔离级别为可重复读(REPEATABLEREAD),并在两个会话中开启事务,首先在SeSSionA会话中将"tb_department”数据表中department_name(学院名称)智能制造与电气工程学院的department_address(学院地址)的值修改9栋教学楼2楼,并进行COMMIT提交操作。同时在SessionB会话也中对智能制造与电气工程学院的学院地址进行修改操作,此时SeSSiOnB会话将操作失败。SessionA【任务参考效果图】GQAdmintstratoncmd.exe-mysql-uroot-pmysql>SETSESSIONTRANSACTIONISOLATIONLEVELREPEATABLEREAD;QueryOK,Orowsaffected(O.OOsec)mysql>IUSEdb_study;|DatabaseChangedmysql>STARTTRANSACTION;QueryOK,Orowsaffected(O.OOsec)mysql>UPDATEtb_department->:SETdepartment_address='9栋教学楼2楼'->WHEREdepartment_name-,智能制造与电气工程学堂;QueryOK,1rowaffected(O.OOsec)Rowsmatched:1Changed:1Warnings:Omysql>Administrator:cmd.e×e-mysql-uroot>pSSSIOB一口mysql>SETSESSIONTRANSACTIONISOLATIONLEVELREPEATABLEREAD:QueryOK,Orowsaffected(O.OOsec)mysql>JJSEdb_study;Databasecange3mysql>STARTTRANSACTION;QueryOK,OrowsaffecTed(O.OOsec)mysql>UPDATEtb_department->'SETdepartment_address='9栋教学楼3楼'->WHEREdepartme5t_name二'智能制造与电气工程生院LERROR1205(HYOOO):Lockwaittimeoutexceeded:tryrestartingtransactionmysql>.【任务完成效果图】请按照任务需求将完成的效果图放在下方。任务5实验过程中常见错误解决【任务需求】在实验过程中出现如下图所示的错误,请调试,并写出解决办法。【实验思考】1 .未进行COMMIT事务提交操作在SessionA会话中往“tb_department”数据表中插入一行数据,并且在当前会话中能查看到插入的数据,如下图1所示。当在SessionB会话中则不能查看,如下图2所示。AdmlnluratocCfnd.xmytqlurootpmysql>USEdb_study:Database.changfid_mysql>STARTTRANSACTION:QueryOK,0rowsaffected(0.00sec)mysql>INSERTINTOtb_department->VALUESCXIT,'数学学院二87471240,'13栋教学楼');QueryOK,1rowaffected(0.00sec)mysql>SELECT*FROMtb_department:department-idXOl X02 X03 X04 X05 X06 X07X0810 rows in set (0.00 sec)department_phone87471231874712328747123387471234874712358747123587471236874712368747123887471240department_address信息楼9栋教学楼8栋教学楼7株教学楼3楼7株教学楼6楼6栋教学楼4楼 6栋教学楼6楼行政楼1栋教学楼13栋教学楼 AdminHtratoc cmd.exe Efyl rootmysql> USE db_study:Database changedmysql> SELECT * FROM tb_department;I department_id I department_name010203040506070809Xxxxxxxxx电院院院院学院 院与学学学院学育学 学造程理理学计教能 机制工管管语设与智 克能筑商济国术文工 计智建工经外艺人人9 rows in set (0.00 sec)01 SessionAHglI department-PhOne department.address 8747123187471232874712338747123487471235874712358747123687471236874712382 SessionBSS问题原因:解决方案:2 .可重复读操作时会话窗口未响应在进行可重复读操作演示时,SeSSionB会话的窗口未响应,一直在处于正在处理状态,如下图所示。ABAdministratorcmd.exe-mysql-uoot-pbessonb-affiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or,h,forhelp.Type,c,toclearthecurrentinputstatement.mysql>SETSESSIONTRANSACTIONISOLATIONLEVELREPEATABLEREAD;QueryOK,Orowsaffected(O.OOsec)mysql>USEdb_study;Databasechangedmysql>STARTTRANSACTION;QueryOK,0rowsaffected(0.00sec)mysql>UPDATEtb_department->SETdepartment_address='9栋教学楼3楼'->WHEREdepartment_name=,智能制造电气工程学院';问题原因:解决方案: