数据库系统概论-并发控制(Concurrency Control)

本文深入探讨数据库并发控制的重要性,保证事务的ACID特性。阐述并发操作可能引发的数据不一致类型及避免策略,如封锁、时间戳、乐观控制法和MVCC。详细讲解封锁的概念,包括排他锁和共享锁,以及如何使用封锁机制保持数据一致性。此外,还讨论了活锁和死锁的现象、原因及解决方法,包括预防死锁的策略和检测及解除死锁的技术。最后,介绍了意向锁的概念和作用,以及IS锁、IX锁、SIX锁的相容矩阵。
摘要由CSDN通过智能技术生成

1. 在数据库中为什么要并发控制 ?并发控制技术能保证事务的哪些特性?

  • 若对并发操作不加控制,就可能会存取和储存不正确的数据,破坏事务的一致性和数据库的一致性。
  • 事务具有 ACID特性。数据库管理系统对并发操作进行正确的调度,是为了保证事务的隔离性和一致性。

2. 并发操作可能会产生哪几类数据不一致?用什么方法可以避免各种不一致的情况?

  • 并发操作可能会导致:丢失修改,不可重复读,读“脏”数据
  • 并发控制技术主要有:封锁(locking),时间戳,乐观控制法,多版本并发控制(MVCC)

3. 什么是封锁?基本的封锁类型有几种?试述它们的含义。

  • 封锁就是事务T对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。
  • 基本的封锁类型:排他锁(写锁,X锁),共享锁(读锁,S锁)。排他锁:若事务 T对数据对象A加X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁为止。共享锁:若事务T对数据对象A加S锁,则事务T可以读A,但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
  • 封锁类型的相容矩阵(横线“-”表示没有加锁请求):
T2
T1 X S -
X N N Y
S N Y Y
- Y Y Y

4. 如何用封锁机制保持数据的一致性?

  • 利用三级封锁协议解决因为并发操作的不正确调度带来的数据不一致性问题;
  • 一级封锁协议可以解决“丢失修改”的问题。一级封锁协议是指:事务T在修改数据对象A前,必须先对其加X锁,直至事务结束才 释放。注意:在一级封锁协议中,如果仅仅是 读数据,是不需要加锁的,因此,不能解决“读脏数据”和“不可重复读”的问题。
  • 二级封锁协议可以解决“丢失修改”、“读脏数据”的问题。二级封锁协议是指:在一级协议的基础上&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值