事务的介绍以及示例说明

一、什么是事务

1.概念
事务是数据库提供的一种手段,功能。针对一系列dml语句(insert,update,selete)
保证这组dml语句,要么都执行,要么都不执行。
2.事务实现的原理
开启事务。提供缓存。

 start transaction;
insert       并没有真正持久化到数据文件。
delete     并没有真正持久化到数据文件

提交后真正持久化到数据库中。

  commit;

回滚

rollback;

3,mysql中的事务
默认情况下,mysql是一条语句一个事务,自动提交(不报错的前提下)

二、事务的四个特征ACID

原子性(Atomicity):整个事务中的所有操作,必须作为一个单元全部完成(或者全部取消)要么都执行,要么都失败。
一致性(Consistency):在事务开始之前和结束之后,数据库都保持一致状态
隔离性(Isolation):多个客户端,每个客户端和其他客户端的事务是隔离性。
一个事务不会影响其他事务的运行

持久性(Durability):在事务完成以后,该事务对数据库所作的更改将持久化地保存在数据库之中,并不会被回滚

三、事务的隔离级别

1.四种隔离级别
每个客户端事务的相互隔离的程度不一样,影响不一样。级别越高,资源利用越低。
(MySQL默认三挡起步,Oracle默认二档起步)
READ-UNCOMMITTED 未提交读 A 可以读到 B 的未提交的数据 B rollback 脏读
READ-COMMITTED 已提交读 A 可以读到 B 的提交的数据 A 不可重复读
REPEATABLE-READ 可重复读 A 读到的都是一样的 B 幻读
SERIALIZABLE 序列化 A 一个客户独占。 B 要排队, A B
补充:在这里插入图片描述
2.设置事务隔离级别
(1)设置相应级别

set global transaction isolation level read uncommitted;
set global transaction isolation level read committed;
set global transaction isolation level repeatable read;
set global transaction isolation level serializable ;

(2)退出数据库,重新进入,图例为未提交读read uncommitted级别;
在这里插入图片描述
3.查看事务的隔离级别

SELECT @@global.tx_isolation;

在这里插入图片描述
4.演示
打开两个窗口登录MySQL来演示A和B
进入数据库,使用一个数据库(自选,此处使用test数据库)

use test;

(1)在B中创建student表

drop table if exists student;
create table student(
    -> name varchar(255),
    -> age int
    -> );

B中查看student表

desc student;

在这里插入图片描述
(2)在B中插入数据

insert into student(name,age) values('zhangsan',20);
insert into student(name,age) values('lisi',30);

A中查看B
在这里插入图片描述
(3)B开启事务后继续操作数据库

start transaction;
insert into student(name,age) values('zw',50);
insert into student(name,age) values('wlw',60);

在这里插入图片描述
在A中查看B,虽然B没有提交事务,但此时的隔离级别A可以查看B修改后的数据库表单
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值