【数据库】数据库并发事务导致的五大问题

本文介绍了数据库事务的概念及其ACID特性,并详细解释了并发事务可能导致的问题,如两类更新问题及三类读问题。

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

关于事务

数据库事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
数据库事务通常包含了一个序列对数据库的读/写操作。包含有以下两个目的:

  1. 为数据库操作序列提供了一个从失败者中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法;
  2. 当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。

事务(Transaction)是并发控制的基本单位。所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

例子:某人要在商店使用电子货币购买100元的商品,其中至少包括两个操作——该人账户减少100元 & 商店账户增加100元,这两个操作构成整个事务,支持事务的数据库管理系统(transactional DBMS)就是要确保这两个事务都能完成,或者一起取消,否则就会出现100元凭空消失的情况。

数据库事务拥有ACID特性:
  • 原子性(Atomicity)
    事务作为一个整体被执行,包含在其中的数据库操作要么全部被执行,要么都不执行。
  • 一致性(Consistency)
    事务应确保数据库的状态从一个一致状态转变为另一个一致状态。(一致状态的含义时数据中的数据应满足完整性约束)
  • 隔离性(Isolation)
    多个事务并发执行,一个事务的执行不应影响其他事务的执行。
  • 持久性(Durability)
    已被提交的事务对数据库的修改应该永久地保存在数据库中。
数据库并发事务导致的五大问题

两类更新问题 & 三类读问题

第一类丢失更新

A事务撤销时,把已经提交的B事务的更新数据覆盖了。

第二类丢失更新

A事务提交时,把已经提交的B事务的更新数据覆盖了。

脏读

读到未提交更新的数据。

不可重复读

读到已经提交更新的数据,但一个事务范围内两个相同的查询却返回了不同的数据。

幻读

读到了另一个事务已提交的插入数据。

数据库事务隔离级别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值