数据库Mysql——事务

目录

事务的应用场景说明

手动提交事务

事务的四大特性 ACID

事务的隔离级别

MySQL 数据库有四种隔离级别


事务的应用场景说明

什么是事务: 在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的。转账是一个用户扣钱,另一个用户加钱。如果其中有一条 SQL 语句出现异常,这条 SQL 就可能执行失败。

事务执行是一个整体,所有的 SQL 语句都必须执行成功。如果其中有 1 条 SQL 语句出现异常,则所有的SQL 语句都要回滚,整个业务执行失败。

  1. 手动提交事务

MYSQL 中可以有两种方式进行事务的操作:

1)  手动提交事务

2)  自动提交事务  默认是自动提交事务

手动提交事务的 SQL 语句

功能

Sql语句

开启事务

start transaction;

提交事务

commit;

回滚事务

rollback;

事务的四大特性 ACID

事务特性   

含义

原子性(Atomicity)

每个事务都是一个整体,不可再拆分,事务中所有的 SQL  语句要么都执行成功,

要么都失败。

一致性(Consistency)

事务在执行前数据库的状态与执行后数据库的状态保持一致。如:转账前2个人的

总金额是2000 ,转账后2个人总金额也是2000。

隔离性(Isolation )

事务与事务之间不应该相互影响,执行时保持隔离的状态。

持久性(Durability )

一旦事务执行成功,对数据库的修改是持久的。就算关机,也是保存下来的。

事务的隔离级别

事务在操作时的理想状态: 所有的事务之间保持隔离,互不影响。因为并发操作,多个用户同时访问同一个数据可能引发并发访问的问题:

并发访问的问题  

含义

脏读

一个事务读取到了另一个事务中尚未提交的数据

不可重复读   

一个事务中两次读取的数据 内容 不一致,要求的是一个事务中多次读取时数据是一致的, 这是事务 update 时引发的问题

幻读

一个事务中两次读取的数据的 数量 不一致,要求在一个事务多次读取的数据的数量是一致的,这是 insert  或 delete 时引发的问题

MySQL 数据库有四种隔离级别

上面的级别最低,下面的级别最高。“是”表示会出现这种问题,“否”表示不会出现这种问题。

级别

名字

隔离级别

脏读

不可重复读

幻读

1

读未提交

read uncommitted

2

读已提交

read committed

3

可重复读

repeatable read

4

串行化

serializable

隔离级别越高,性能越差,安全性越高。

MySQL的默认隔离级别为 第3级别 repeatable read

# 查看数据库隔离级别

show variables like '%transaction_isolation%';

  • 设置当前会话(连接) 或 全局 的事务隔离级别:

SET SESSION | GLOBAL TRANSACTION ISOLATION LEVEL 级别字符串;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值