mysql事务

事务

操作集合

特性

原子性
    要么全部执行,要么全部失败
一致性
    开始和完成,数据保持一致
隔离性
    事务之间,相互独立
持久性
    修改的数据是完整的

隔离级别

并发情况下引起的问题
    1:脏读
    2:幻读
    3:不可重复读

解决

读未提交RU
    情况都出现
读已提交RC
    不会脏读
可重复读RR
    不会出现幻读
串行化SE

实现

锁机制
    阻止其他事务对数据进行操作
    RU:事务读的时候不加锁
    RC:读的时候加行级共享锁,读完释放
    RR:读的时候加行级共享锁,事务执行完释放
    SE:读的时候加表级共享锁,事务执行完释放
mvcc机制
    生成一个数据快照,并用这个快照提供一定级别的一致性的读取,也称为多版本数据控制
    实际就是cas版本控制
    查询(select):查找数据版本号,早于(小于等于)当前事务id的数据行。查找删除版本号为null 或者大于当前事务版本号的记录
    插入:同一事务中插入两条记录,记录的 数据版本号为事务id,删除版本号为null
    删除:一个事务(假设id为22)中执行删除语句,会更新数据的删除版本号为 当前事务id 22
    修改:当一个事务中 修改一条记录时, 是先复制该数据,新数据数据版本号为当前事务id,删除版本号为 null 。然后更新 原来数据的删除版本号为 当前事务id。

Undo Log

指事务开始之前, 在操作任何数据之前, 首先将 需操作的 数据备份到一个地方

Redo Log

为了实现事务的持久性而出现的产物
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值