十一章:数据库恢复技术并发控制

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十一章:数据库恢复技术并发控制相关的知识,希望对你有一定的参考价值。

文章目录

第十章:数据库恢复技术

事务

事务的四大特性:ACID。

A-原子性:
要么全做,要么全不做。

C-一致性
一致性与原子性密切相关,要么全做,要么全不做,否则就会导致数据的不一致。比如:银行汇钱,两边都有操作才行。

I-隔离性
一个事务的执行不能被其他事务所干扰。

D-持久性
数据库的改变是永久的,比如要落入磁盘。

故障

故障的种类:

  1. 事务内部的故障:采取REDO重做和UNDO撤销技术
  2. 系统故障:系统突然停转,系统要重启
  3. 介质故障:硬件损坏
  4. 计算机病毒

ps:
REDO-重做
UNDO-不做了

恢复技术

数据转储:对失败的事务重新执行
日志文件:记录事务对数据的更新操作的文件

恢复策略

对事务故障的恢复:事务异常终止,那么撤销之前的所有操作
对系统故障的恢复:还没执行完的事务UNDO,丢失的事务REDO
对介质故障的恢复:重装数据库,重做已完成的事务

检查点之前的就是已经保存了的,所以T1不要重做。
Tf时,系统故障,此时T3和T5都没做完,所以要撤销。
T2,T4已经做完(丢失了),所以要重做。

第十一章:并发控制

并发带来的问题和解决

带来的问题

  1. 丢失修改
  2. 读脏数据
  3. 不可重复读

丢失数据:我修改的东西丢失了。如我把票价改成11元,但结果还是原来的21元。

读脏数据:我读的数据是已经撤回的无效数据。如我把车票改成1元,发现太便宜了,撤回。结果还没来得及撤回,就被别人读到了。

不可重复读:在同一个事务中,连续两次读到的数据不一样。比如我第一次读到的票价为1元,结果一个人把它偷偷改成21元,我第二次读就是21元了。


解决方法

引入锁的概念:

  1. 排它锁:写锁——X锁
  2. 共享锁:读锁——S锁

封锁协议

一级封锁协议
修改时,必须加X锁,直到结束——解决丢失修改

二级封锁协议
读的时候,加S锁,用完就放——解决读脏数据

三级封锁协议
读的时候,加S锁,直到结束——解决不可重复读

死锁和活锁

死锁:多个锁相互等待,互相谦让,没人上锁。
如:
T1有A,并把它上锁了,等待B。
T2有B,并把它上锁了,等待A。

活锁:该锁永远等待,得不到机会上锁。
(类似饥饿)

可串行性

并发调度中的某一次的结果与串行调度一致,称为可串行化。

可串行化是事务正确调度的准则。

举个例子:
先执行A,再执行B,再执行C的结果为D1.
A、B、C同时执行的结果为D2.
若D1与D2相同,则可串行化。

两段锁协议
上锁的过程与解锁的过程分别在两边。
若遵循两段锁协议,则上S锁和上X锁都在左边,解锁都在右边。

封锁的粒度

封锁粒度大,并发度小,开销小。
封锁粒度小,并发度大,开销大。

以上是关于十一章:数据库恢复技术并发控制的主要内容,如果未能解决你的问题,请参考以下文章

数据库 chapter 11 并发控制

第十一章 kubernetes 核心技术-Controller控制器

第十一章:线程

第十一章读书笔记

数据库技术:MySQL数据库锁技术浅析

数据库技术:MySQL数据库锁技术浅析