十一章:数据库恢复技术并发控制
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十一章:数据库恢复技术并发控制相关的知识,希望对你有一定的参考价值。
文章目录
第十章:数据库恢复技术
事务
事务的四大特性:ACID。
A-原子性:
要么全做,要么全不做。
C-一致性
一致性与原子性密切相关,要么全做,要么全不做,否则就会导致数据的不一致。比如:银行汇钱,两边都有操作才行。
I-隔离性
一个事务的执行不能被其他事务所干扰。
D-持久性
数据库的改变是永久的,比如要落入磁盘。
故障
故障的种类:
- 事务内部的故障:采取REDO重做和UNDO撤销技术
- 系统故障:系统突然停转,系统要重启
- 介质故障:硬件损坏
- 计算机病毒
ps:
REDO-重做
UNDO-不做了
恢复技术
数据转储:对失败的事务重新执行
日志文件:记录事务对数据的更新操作的文件
恢复策略
对事务故障的恢复:事务异常终止,那么撤销之前的所有操作
对系统故障的恢复:还没执行完的事务UNDO,丢失的事务REDO
对介质故障的恢复:重装数据库,重做已完成的事务
检查点之前的就是已经保存了的,所以T1不要重做。
Tf时,系统故障,此时T3和T5都没做完,所以要撤销。
T2,T4已经做完(丢失了),所以要重做。
第十一章:并发控制
并发带来的问题和解决
带来的问题:
- 丢失修改
- 读脏数据
- 不可重复读
丢失数据:我修改的东西丢失了。如我把票价改成11元,但结果还是原来的21元。
读脏数据:我读的数据是已经撤回的无效数据。如我把车票改成1元,发现太便宜了,撤回。结果还没来得及撤回,就被别人读到了。
不可重复读:在同一个事务中,连续两次读到的数据不一样。比如我第一次读到的票价为1元,结果一个人把它偷偷改成21元,我第二次读就是21元了。
解决方法
引入锁的概念:
- 排它锁:写锁——X锁
- 共享锁:读锁——S锁
封锁协议
一级封锁协议:
修改时,必须加X锁,直到结束——解决丢失修改
二级封锁协议:
读的时候,加S锁,用完就放——解决读脏数据
三级封锁协议:
读的时候,加S锁,直到结束——解决不可重复读
死锁和活锁
死锁:多个锁相互等待,互相谦让,没人上锁。
如:
T1有A,并把它上锁了,等待B。
T2有B,并把它上锁了,等待A。
活锁:该锁永远等待,得不到机会上锁。
(类似饥饿)
可串行性
并发调度中的某一次的结果与串行调度一致,称为可串行化。
可串行化是事务正确调度的准则。
举个例子:
先执行A,再执行B,再执行C的结果为D1.
A、B、C同时执行的结果为D2.
若D1与D2相同,则可串行化。
两段锁协议
上锁的过程与解锁的过程分别在两边。
若遵循两段锁协议,则上S锁和上X锁都在左边,解锁都在右边。
封锁的粒度
封锁粒度大,并发度小,开销小。
封锁粒度小,并发度大,开销大。
以上是关于十一章:数据库恢复技术并发控制的主要内容,如果未能解决你的问题,请参考以下文章