日志

来自计算思维百科
跳转至: 导航搜索
日志.png

数据库中每进行的一个操作都要记录下来,日志文件就记录了所有对数据库的修改操作。在数据库发生故障时,日志文件就可以发挥重要作用。

基本概念

数据库系统中的日志就好像我们平时写的日志一样,比如我今天几点起床,我去哪里吃了早餐,吃完早餐我就去上学了。不过数据库的日志是在计流水账,它没有写感想,它也不是用来记录现在的感受的,而是用来怀旧的,它只是简单地记录了何时何地做了什么事情而已。

所以这个日志记录了所有对数据库内容的修改,包括你从表中插入一行记录,删除一行记录,以及更新某个记录的值。

那么到了故障发生的时候,我就调用我的日志文件来恢复。

1.延迟修改技术。他把一个事务所有对数据项的写操作拖延到事务部分提交时才执行。 事务的最后一个动作一旦被执行,称该事务是部分提交的。当事务部分提交时,日志上有关该事务的信息被用来执行延迟写,那么执行更新操作的时候我的日志文件就保存在稳定的存储器上,事务进入了提交状态。假如这个时候系统出现故障,系统重启只用日志文件恢复那些处于提交状态的事务。

2.立即更新技术。它的做法和第一个延迟修改技术相反,事务每执行一个操作,就向日志文件写入一个操作。如果故障出现了,系统恢复时重做已经完成的事务,撤销事务没有完成的操作,以保持一致性。

以仓库为例,延迟修改技术就是在把货物存放到仓库的过程中,我先留一个地方存放要入库的货物,清点货物数量与种类,然后记录到我的入库日志中,倘若清点完成,就在日志记下入库检查完成。最后再把货物真正存到仓库里面去。

而立即更新技术就好比每一批货物到来时,我都马上把货物存放到货架里面去,存好后我用入库日志表记录这批货物已经在仓库存好了。

使用方法及步骤

把你做过的事情用日志记录下来,故障发生的时候重新执行这个事务。

应用案例

应用1-找钥匙

有个周末你去骑行,把单车锁在一个停车场就去逛了,你先逛了一个商场,然后去了一个餐厅吃饭,吃饭后去了一个博物馆,逛了一圈后回去拿单车,最糟糕的事情发生了,你发现钥匙不见了。

解决步骤:确定钥匙最后出现的时间和地点。这里就是锁单车的时候你最后看见你的钥匙。翻开从钥匙最后出现的时间到现在的日志,看看你到底做了什么,这个日志是存放在大脑里的。你一步一步地回退或者从起点重做你做过的事情。把你去过的地方都找一遍,从商场->餐厅->博物馆。这样你就有可能找到钥匙了。

应用2-现场恢复

某个商店发生了大型盗窃案,很多贵重商品都消失了。那么店主自然会去调用录像,这个时候录像就是你的日志,它时刻记录了商店里发生的一切。这样,店主就可以找到犯罪嫌疑人出现的时候,以及他的模样,方便警察破案。

可以体现的计算思维

显然,数据库系统的日志体现了计算思维的系统恢复特点。在解决问题的过程中出现意外时,通过日志复原我之前做过的事情,使系统连续正常运行。