关于数据库事务

什么是数据库事务

在同一个请求中包含一系列访问并操作数据库中的数据项的操作,这一系列操作要保证ACID四大特性,那么这个操作序列称为一个事务

ACID四大特性

A:原子性。同一事务中的操作要么都执行,要么都不执行。

C:一致性。事务中的操作必须将数据库中的数据项从一个一致性状态变为另一一致性状态。

I: 隔离性。在多个事务并发执行时,事务和事务之间不能相互影响。

D:持久性。一个事务一旦提交,那么它对数据项的修改必须持久性地保存在数据库中

什么是脏读,幻读,不可重复读

脏读:

一个事务读取到了其他事务未提交的数据

幻读:

一个事务在读取过程中,由于其他事务已提交了修改后的数据,导致在二次读取时出现读取结果不一致

不可重复读:

一个事务在读取过程中,由于其他事务已提交了在范围内新增的记录,导致在二次读取时出现读取结果不一致

四种隔离级别

读未提交

会发生脏读,幻读,不可重复度

读已提交

会发生幻读,不可重复读

可重复读

会发生幻读

串行化

可解决所有问题

何为MVCC

是一种数据库的并发版本控制方案,可以配合多种事务隔离级别使用。可以提高数据库并发性能,用更好的方式去处理读写冲突。做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。

MVCC配合不同的事务隔离级别使用,对于数据库中数据版本的可见性和锁定机制都是不同的。

隔离级别RC能够解决脏读问题,就是因为它配合了MVCC一起解决

隔离级别RR能够解决不可重复读问题,也是因为它配合了MVCC一起解决

2)、读写∶有线程安全问题,可能会造成事务隔离性问题,可能遇到脏读、幻读、不可重复读

3)、写写∶ 有线程安全问题,可能存在更新丢失问题

MVCC是一种用来解决读写冲突的无锁并发控制,也就是为事务分配单项增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照。

因此,MVCC可以为数据库解决以下问题∶

1)、在并发读写数据库时,可以做到在读操作时不用阻塞写操作,写操作也不用阻塞读操作,提高了数据库并发读写的性能。

2)、配合不同的事务隔离级别解决脏读、幻读、不可重复读等事务隔离问题,但是不能解决更新丢失问题。

如何理解MVCC:

MVCC(多版本并发控制)是一种数据库并发控制的机制,它允许在不锁定数据库资源的情况下进行事务处理,从而提高数据库系统的并发性能和吞吐量。这种机制通过为每个事务创建数据的“快照”版本来工作,使得读取操作可以访问到事务开始时刻的数据状态,而不受并行写入事务的影响。

MVCC的工作原理:

  1. 版本控制
    • 每当数据项被更新时,系统不会直接覆盖旧数据,而是写入一个新的版本。
    • 每个数据版本都会关联一个或多个时间戳,标识数据版本的有效时间范围。
  1. 事务时间戳
    • 每个事务在开始时获取一个唯一的时间戳。
    • 读事务可以看到所有时间戳小于等于其自身时间戳的数据版本。
    • 写事务生成的数据版本将有一个时间戳大于当前事务时间戳的标记。
  1. 数据版本的可见性
    • 当事务请求读取数据时,系统会提供该事务时间戳之前的最新数据版本。
    • 这确保了事务看到的是一致的数据快照,即使在读取过程中其他事务正在进行写操作。
  1. 垃圾回收
    • 随着时间的推移,一些旧的数据版本不再被任何事务访问,系统需要定期清理这些不再需要的数据版本。
    • 这个过程称为垃圾回收(GC),它是维持MVCC性能的关键。

MVCC的优点:

  • 提高并发性:读写操作可以并行进行,读操作不会被写操作阻塞,反之亦然。
  • 减少锁的需求:由于操作基于数据版本,因此大多数情况下可以避免显式的行级锁。
  • 支持事务的一致性读:每个事务都可以在一个一致性的数据视图上操作,而不会看到其他并发事务中的中间状态。

MVCC的挑战:

  • 存储开销:由于每次数据更新都会生成新的数据版本,因此MVCC可能需要比传统锁更多的存储空间。
  • 性能开销:垃圾回收过程需要额外的资源,且如果不及时处理,可能会影响系统的性能。

总结来说,MVCC通过创建数据的多个版本来实现高效的并发控制,使得数据库系统能够在高并发环境下提供稳定和高效的读写服务。

  • 26
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值