为什么要进行并发控制

  1. 为什么要进行并发控制——数据库可能存在不一致
  2. 三种典型的不一致现象
    (1)丢失修改
    (2)不能重复读
    (3)脏读
    数据库-实现篇 第十八讲 未完结

数据库-实现篇 第十八讲 未完结

  1. 并发控制及相应的事务处理技术是DBMS的核心技术
    数据库-实现篇 第十八讲 未完结

什么是事务

  1. 事务:数据库管理系统提供的控制数据操作的一种手段,保证数据库的正确性、一致性

  2. 事务的宏观性:一个存取或改变数据库内容的程序的一次执行,或着说一条或多条SQL语句被看成一个事务
    事务一般由程序员提出,因此有开始和结束,结束需要提交或撤销

  3. 一个事务可以处理一个或一条记录
    数据库-实现篇 第十八讲 未完结
    一段程序语句可能会循环执行,执行中SQL语句引出事务,到commit/RollBack结束事务,每次重复都将产生一个事务。

  4. 事务的微观性:对于数据库的一系列基本操作的一个整体性执行

  5. 事务的并发执行
    并发、交错的事务引发不一致性

  6. 事务的特性:ACID
    A:原子性,保证事务的一组更新操作原子不可分
    C:一致性,保证事务的操作状态是正确的
    I:隔离性,并发执行的多个事务之间不受影响
    D:持久性,已提交事务不丢失,被撤销事务可恢复

  7. DBMS对事务的控制
    数据库-实现篇 第十八讲 未完结

事务调度与可串行性

  1. 事务调度:一组事物的基本步(读、写、其他控制)的一种执行顺序称为对这组事务的一个调度。
  2. 并发调度:多个事务从宏观上看是并发执行的
  3. 并发调度的正确性
  4. 可串行性:衡量并发调度正确性
    数据库-实现篇 第十八讲 未完结
  5. 冲突:调度中一对连续的动作,满足如果顺序交换,那么涉及的事务中至少有一个事务的行为会改变
  6. 集中冲突情况:
    (1)同一事务中任何两个操作都是冲突的
    (2)不同事务对同一元素的写操作是冲突的
    (3)不同事务对同一元素的一读,一写操作是冲突的
  7. 冲突可串行性
    一个调度,如果交换两个无冲突的操作能够转换到某一个串行的调度,则称此调度为冲突可串行化的调度。
  8. 冲突可串行性是比可串行性严格的概念
    满足冲突可串行性一定满足可串行性,反之不成立

冲突可串行性判别算法

  1. 并发调度的正确性
  2. 冲突可串行性判别算法
    (1)构造一个前驱图(有向图),如果这个有向图没有环,冲突是可串行化的

什么是锁

数据库-实现篇 第十八讲 未完结

  1. 锁是控制并发的一种手段
    (1)每一数据元素都有唯一的锁
    (2)每一事务读写数据元素前,要获得锁
    (3)如果被其他事务持有该元素的锁,则需要等待
    (4)事务处理完成后要释放锁

Li(A):事务Ti对数据元素A加锁
Ui(A):事务Ti对数据元素A解锁

  1. 锁表
    数据库-实现篇 第十八讲 未完结
    必须解锁后才能枷锁

封锁协议需要考虑什么

  1. 锁的类型:
    (1)排他型锁X:只有一个事务能读、写
    (2)共享型锁S:所有事务都可以读,但任何事务都不能写
    (3)更新锁U:初始读,后可升级为写
    (4)增量锁I:增量更新(A=A+X)
  2. 封锁协议之相容性矩阵:
    (1)读写锁协议:
    数据库-实现篇 第十八讲 未完结
    (2)更新锁协议
    数据库-实现篇 第十八讲 未完结
  3. 加锁/解锁时机
    数据库-实现篇 第十八讲 未完结

3级协议:降低了并发度

  1. SQL之隔离性级别
    数据库-实现篇 第十八讲 未完结
    所有的都不允许有丢失修改

  2. 幻读:
    数据库-实现篇 第十八讲 未完结

  3. 封锁粒度
    数据库-实现篇 第十八讲 未完结

两段封锁协议

  1. 两端封锁协议:读写数据之前要获得锁,每个事务中所有的封锁请求先于任何一个解锁请求。

相关文章:

  • 2021-09-28
  • 2022-12-23
  • 2021-10-13
  • 2022-12-23
  • 2021-07-12
  • 2022-12-23
  • 2021-08-17
猜你喜欢
  • 2021-09-27
  • 2021-07-25
  • 2021-07-15
  • 2021-05-11
  • 2021-08-05
  • 2021-06-04
  • 2022-12-23
相关资源
相似解决方案