第五次实验报告

事务的实现

  • 使用set语句来改变自动提交模式
SET autocommit = 0; /*关闭*/
SET autocommit = 1; /*开启*/

– 注意:
— 1.MySQL中默认是自动提交
— 2.使用事务时应先关闭自动提交 CREATE DATABASE shop;

mysql> use shop;
Database changed
mysql> create table account(
    -> id int(11) not null auto_increment,
    -> name varchar(32) not null,
    -> cash decimal(9,2) not null,
    -> primary key(id)
    -> );
	mysql> insert into account(name,cash) values('A',2000.00),	('B',10000.00);
	-- 转账实现‘’
	SET autocommit = 0; -- 关闭自动提交
	START TRANSACTION; -- 开始一个事务,标记事务的起始点
	UPDATE account SET cash=cash-500 WHERE `name`='A';
	UPDATE account SET cash=cash+500 WHERE `name`='B';
	COMMIT; -- 提交事务

rollback;

SET autocommit = 1; – 恢复自动提交
Mysql事务隔离级别设置
在这里插入图片描述
定义事务隔离级别 使用 set transaction isolation level 语句
运用select@@transaction_isolation 查看事务的隔离级别
5.0 版本运用 select @@tx_isolation;查看事务的隔离级别

  1. 隔离级别为read uncommitted (脏读)
    打开客户机A 执行以下语句;

set transaction isolation level read uncommitted;
select@@transaction_isolation;
select * from account;

打开客户机B执行以下语句


set transaction isolation level read  uncommitted;
start transaction;
update account set cash=cash+500 where name='B'

打开客户机A执行


select * from account;

客户机A看到了客户机B尚未提交的结果,造成了脏读现象。
2. 隔离级别为read committed (脏读)
打开客户机A 执行以下语句;


set transaction isolation level read  committed;
select@@transaction_isolation;
select * from account;

打开客户机B执行以下语句


set transaction isolation level read   committed;
start transaction;
update account set cash=cash+500 where name='B'

打开客户机A执行


select * from account;

MySQL客户机A在同一个事务中两次执行select * from account;的结果不同,造成了不可重复读现象
3. 隔离级别为repeatable read(MySQL的默认隔离级别)
不能避免幻影现象 其他都可(但InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。)
打开客户机A 执行以下语句;


set transaction isolation level  repeatable read;
select@@transaction_isolation;
select * from account;

打开客户机B执行以下语句


set transaction isolation level repeatable-readstart transaction;
insert into account (name,cash) values('C',3000.00);
commit;
select * from account;

打开客户机A执行

select * from account;

MySQL备份
使用mysqldump备份工具
Mysqldump客户端
转储数据库
搜集数据库进行备份
将数据转移到另一个SQL服务器,不一定是Mysql服务器
在这里插入图片描述
使用MySQL 命令恢复数据

  1. 在登录mysql的情况下: – source D:/a.sql
    source 备份文件
  2. 在不登录的情况下
    mysql -u用户名 -p密码 库名 < 备份文件
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值