mysql 事务 实验报告_数据库实验报告:事务与并发控制

3a373235b21ecf7e53ce13f14715550a.png

1.实验七:事务与并发控制

1.1.实验目的

1.掌握事务机制,学会创建事务。

2.理解事务并发操作所可能导致的数据不一致性问题,用实验展现四种数据不一致性

问题:丢失修改、读脏数据、不可重复读以及幻读现象。

3.理解锁机制,学会采用锁与事务隔离级别解决数据不一致的问题。

4.了解数据库的事务日志。

1.2.实验内容

假设学校允许学生将银行卡和校园卡进行绑定,在student数据库中有如下的基本表,其中校园卡编号cardid即为学生的学号:

icbc_card(studcardid,icbcid,balance) //校园卡ID,工行卡ID,银行卡余额campus_card(studcardid,balance) //校园卡ID,校园卡余额

数据创建的代码:

use student

createtable campus_card

( studcardid Char(8),

balance Decimal(10,2))

createtable icbc_card

(

studcardid Char(8),

icbcid Char(10),

balance Decimal(10,2)

)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一份关于 MySQL 事务并发控制实验报告。 一、实验目的 1.了解 MySQL 事务的概念和实现方法; 2.了解 MySQL 并发控制的概念和实现方法; 3.掌握 MySQL事务并发控制的应用技巧; 4.通过实验,加深对 MySQL 数据库管理的理解。 二、实验环境 1.操作系统:Windows 10; 2.数据库MySQL; 3.开发工具:Navicat Premium。 三、实验内容 1.创建一个数据库和数据表; 2.使用事务实现对数据表的插入操作; 3.测试并发控制机制,比较不同并发控制方式的效果。 四、实验步骤 1.创建一个名为 experiment 的数据库,并在其中创建一个名为 student 的数据表,包含 id、name、age 三个字段,其中 id 是主键; 2.使用 Navicat Premium 连接 MySQL 数据库,并在 Query 中输入以下代码: ``` USE experiment; CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(20), age INT ); ``` 3.使用事务实现对 student 数据表的插入操作。在 Query 中输入以下代码: ``` START TRANSACTION; INSERT INTO student (id, name, age) VALUES (1, 'Tom', 18); INSERT INTO student (id, name, age) VALUES (2, 'Jerry', 20); INSERT INTO student (id, name, age) VALUES (3, 'Mike', 22); COMMIT; ``` 4.测试并发控制机制。在 Query 中输入以下代码: ``` -- 第一个会话 START TRANSACTION; SELECT * FROM student WHERE id = 1 FOR UPDATE; -- 第二个会话 START TRANSACTION; SELECT * FROM student WHERE id = 1 FOR UPDATE; ``` 以上代码模拟了两个会话同时对 student 表中的同一行进行更新的情况。其中,第一个会话使用 FOR UPDATE 锁定了 id 为 1 的行,第二个会话等待第一个会话结束后,再使用 FOR UPDATE 锁定同一行。 5.比较不同并发控制方式的效果。在 Query 中输入以下代码: ``` -- 第一个会话 SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; START TRANSACTION; UPDATE student SET age = age + 1 WHERE id = 1; COMMIT; -- 第二个会话 SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; START TRANSACTION; SELECT * FROM student WHERE id = 1; ``` 以上代码模拟了两个会话同时对 student 表中的同一行进行更新的情况。其中,第一个会话使用 READ COMMITTED 隔离级别,更新了 id 为 1 的行,第二个会话在第一个会话提交后,读取了同一行的数据。 五、实验结果 1.完成了对 student 数据表的插入操作; 2.测试并发控制机制时,第二个会话需要等待第一个会话结束后,才能锁定同一行; 3.比较不同并发控制方式的效果时,第一个会话更新了 id 为 1 的行,第二个会话在第一个会话提交后,读取了同一行的数据。 六、实验结论 1.MySQL事务实现方法是通过 START TRANSACTION、COMMIT 和 ROLLBACK 等命令实现; 2.MySQL并发控制机制包括多版本并发控制(MVCC)和锁机制; 3.在 MVCC 下,每个事务都能看到自己开始之前数据库的状态,但不能看到其他事务未提交的修改; 4.在锁机制下,会对数据库资源进行加锁,以保证多个事务不会同时修改同一数据行; 5.不同的并发控制方式对数据库的访问效率和数据一致性有不同的影响,需要根据实际情况进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值