数据密集型应用设计--事务

本文详细介绍了事务的ACID特性,包括原子性、一致性、隔离性和持久性。重点讨论了读-提交策略、防止脏读和脏写的方法,以及快照级别隔离和MVCC的实现。同时提及了原子写操作和CAS(对比和交换)等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深入理解事务

ACID的含义

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

弱隔离级别

读-提交

提供两个保证:

  1. 读数据库时,只能看到已成功提交的数据(防止“脏读”)
  2. 读数据库时,只能覆盖已成功提交的数据(防止“脏写”)
实现读-提交
  1. 防止“脏读”:对于每个待更新的对象,数据库都会维护新、旧值。在事务提交前,别的事务只能读取到旧值(多版本并发控制)
  2. 防止“脏写”:通过行级锁来实现,必须要要拿到锁的请求才可以修改
快照级别隔离与可重复度

在一个事务内保证多次对同一数据的读取是一致的。

实现快照级别隔离

MVCC 多版本并发控制

防止更新丢失

一个事务读取到某个值之后进行一定的运算,再把新值写到数据库中,在写库之前别的事务可能已经提交了新值的写入,这种情况下会把这个事务的值给覆盖了。

原子写操作

比如 set a = a+1

显示加锁

只有一个事务进行写数据

原子比较和设置

CAS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值