mysql 事务

本文详细介绍了MySQL中的事务概念,包括ACID四大特性——原子性、一致性、隔离性和持久性,并通过实例展示了不同隔离级别下(未提交读、已提交读、可重复读、可串行化)的行为特点。通过开始事务、提交和回滚操作,演示了事务的管理。同时,探讨了如何查看和设置事务隔离级别,以及不同隔离级别下的数据可见性问题。
摘要由CSDN通过智能技术生成

什么是事务

多条sql语句,要么全部成功,要么全部失败。MySQL的事务是在存储引擎层实现。 MySQL的事务有ACID

A 原子性(atomicity):一个事务必须被视为一个不可分割的单元。

C 一致性(consistency):数据库是从一种状态切换到另一种状态。

I 隔离性(isolation):事务在提交之前,对于其他事务不可见。

D 持久性(durablity):一旦事务提交,所修改的将永久保存到数据库。

总结事务命令

事务开始: start transaction

事务开始: begin

事务提交: commit

回 滚: rollback

查看自动提交模式是自动还是手动

on开                        off关闭

 开启就是 set autocommit=1;

事务有4种隔离级别 事务在提交之前对其他事务可不可见

1. read unaommitted(未提交读)

2. read committed(已提交读)

3. Repeatable read(可重复读)

4. seaializable(可串行化)

show variables like '%iso%'; //查看隔离级别

select @@tx_isolation;//查看隔离级别

准备两个终端

首先改成

 set session tx_isolation='read-uncommitted';(未提交读)

换个终端查看,这里看到了事务中修改没有提交对其他事务也是可见的,俗称脏读

 

 回到第一个终端rollback回滚一下。

 

set session tx_isolation='read-committed';(已提交读)  

两个终端都设置

插入一条数据

 

 换一个终端查看

提交一下commit;

总结:从上面的例子可以看出,提交读没有了未提交读的问题,但是我们可以看到客户端A的一个事务 中执行了两次同样的SELECT语句,,得到不同的结果,因此已提交读又被称为不可重复读。同样的筛选 条件可能得到不同的结果。
 set session tx_isolation ='repeatable-read';(可重复读)

   

set session tx_isolation='serializable';(可串行化)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值