【八股学习】MySQL——事务、锁、MVCC

事务

一组操作,要么都执行要么都不执行

# 开启一个事务
START TRANSACTION;
# 多条 SQL 语句
SQL1,SQL2...
## 提交事务
COMMIT;

ACID特性 ⭐

1、原子性:事务是最小执行单位,不允许分割,要么都完成要么都不完成
2、一致性:事务执行前后数据保持一致
3、隔离性:并发访问数据库,各个并发事务之间数据库是独立的
4、持久性:实现上面三种特性后才能保证当前特性。事务提交后对数据的改变是持久的

并发事务带来的问题

简单介绍一下四个问题,以便后续了解四个事务隔离等级
1、脏读:一个事务读取并修改了数据,但是没有提交,此时的修改对其他事务是可见的,如果另一个事务带去了还未提交的数据,但第一个数据发生回滚。那么就读取到了脏数据。简单来说:事务2读取了事务1修改但未提交的数据,随后事务1回滚了数据
2、丢失修改:两个事务同时获取到一个数据后,同时又对这个数据进行了修改,那么早提交的事务的修改就丢失了。
3、不可重复读:两个事务读取到同一个数据后,事务1对其进行了修改并提交,随后事务2又读取了该数据,发现数据发生了改变
4、幻读:一个事务读取了几行数据,随后另一个事务插入了一些数据,再进行读取的时候发现多了一些不存在的记录。

并发控制

MVCC 和 锁中进行补充 :TODO

事务隔离级别 ⭐

结合并发事务带来的问题可以更好地理解这个概念

  • 读取未提交:最低隔离级别,允许读取尚未提交的数据变更
  • 读取已提交:允许读取并发事务已经提交的数据
  • 可重复读:同一字段多次读取结果是一致的,除非本身的事务自己修改了数据。InnoDB的默认级别
  • 可串行化:完
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值