MySQL事务

本篇来大致总结一下关于MySQL的事务的相关知识点(基于InnoDB)

一、事务的特性

一提到事务,最基础的便是事务的特性了,那么无忙首先来看看事务的四大特性

原子性

同一个事务中的操作,要么全部完成,要么全部不完成,不会在操作期间结束,且如果事务中的某个环节执行错误,那么该事务中已经执行的所有操作都将回滚到事务开始前的状态

一致性

事务操作前后,数据库中的数据满足完成性约束,数据库保持一致性状态

隔离性

数据库允许多个并发事务同时进行读写操作,多个事务同时进行操作,不会互相干扰

持久性

事务结束之后,对于数据的修改是永久的,不会因为系统故障而丢失

二、事务的隔离级别

脏读(读未提交)

查询到已更改还未提交的事务的数据

幻读(读提交)

在一个事务中对某条数据进行查询,恰巧另一事务开启对该数据进行修改,导致两次查询的数据不同

可重复读

事务执行过程中看到的数据与事务执行前看到的数据是一致的(MySQ LInnoDB默认隔离级别)

串行化

对记录加上读写锁,在多个事务对这条记录进行读写操作时如果发生了读写冲突,后面的事务需要等到上一个事务完成之后才能继续执行

三、并行事务会发生的问题:

(1)脏读
(2)幻读
(3)不可重复读
解决办法分别对应隔离级别中的脏读,幻读,不可重复读

事务隔离级别的无锁实现方式:MVCC

MVCC(多版本并发控制器)是事务隔离级别的无锁实现方式,主要依靠数据库表单中的隐藏列(最近修改事务的id,回滚指针),undolog和readview来实现
更多详细的介绍可以看之前的一篇文章:链接: MVCC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值