数据库的恢复
数据放在二级介质中。
当二级介质出现问题的时候怎么办呢?
恢复的原因:
事务的提交不等于数据写回磁盘
还有内存管理的问题:
最常用的数据可能还放在内存里,局部性原理
暂时不写回磁盘里
结果提交了之后还在内存里,这个时候崩了
恢复的技术
转储
镜像
日志
很重要!!!!可能考名词解释:什么是日志
- 一个数据库值钱的是数据文件和日志
- 日志是磁盘上的一个文件,为了使数据库可恢复
- 只有dbms可以操纵,你用不了
- 以事务为单位,dbms在日志中记录了事务对数据的更新轨迹
- 先写日志,后做日志所对应的更新
===> 基于日志可以查找出已经提交和未提交的事务,并且恢复到先前的一个一致性状态
对于已经执行完的事务,前卷 (redo,让他重来一遍)
对于没执行完的事务,回退
检查点
checkpoint
用户超多-->事务超多-->生成超多记录-->日志文件超级大
日志文件不可能无穷大,所以事先要规定日志的大小,写完了之后要切换,切换了之后会生成一个归档文件(也叫离线日志文件),然后新写的日志信息叫做连接日志文件或者在线日志文件,你要决定要把归档文件存在哪里。要是问题出现的时候 ,要把所有日志搜个遍,太麻烦
dbms强行发生一个进程,一旦启动,前台用户的事务处于等待状态,后台提交的事务存入磁盘 (做个了结,完全一致),然后生成一个检查点
问题出现的时候,只需要看最近一个检查点后面的信息就够了
日志切换的时候一定会出现一个检查点
所以只需要看连接日志文件,不用看归档日志文件
所以数据库回复的过程只需要看连接日志文件cc