jayli426 发表于 2010-02-21 14:51

还是不理解物理日志的作用

感觉物理日志没有什么作用,因为按照
文档上的说法

物理日志的作用在于保持一批dbspace页的前映象。
这些“前映象”代表了所有数据在物理上与逻辑上都保持一致的这
样一个时刻。
将物理日志中的前映象与逻辑日志中的逻辑日志记录结合起来,
可以恢复数据库自上一次已知的一致点以来发生的所有事务。
这样的已知的一致点称为检查点。在快速恢复过程中,
第一步首先用到物理日志,
将整个系统恢复在Online中最近一次检查点时所处的物理一致的状态。


如果要恢复,用逻辑日志不也是OK的吗?这里提到一个快速恢复?逻辑日志就不能快速恢复吧?
好像其他数据库就没有提物理日志这个概念,例如oracle的日志应当就是informix的逻辑日志

wolfop 发表于 2010-02-21 17:09

IDS的设计,逻辑日志不保留前映像,你怎么回滚?
DB2倒是前后映像都在一个日志,所以没有所谓的物理日志。

我是DBA 发表于 2010-02-22 20:05

本帖最后由 我是DBA 于 2010-02-22 20:07 编辑

物理日志保存修改前的数据用于数据恢复

beilycao 发表于 2010-02-23 16:55

明白了,谢谢

大梦 发表于 2010-02-23 22:22

物理日志里面放的就是脏页的前映象!检查点时就会逻辑清空!
对于用户来说物理日志没有意义,你什么也看不到!onlog可以看逻辑日志!

3sane 发表于 2010-03-11 12:08

回复 1# jayli426


    我倒认为INFORMIX应该能够利用物理日志实现ORACLE的快速回滚的,不知道为何INFORMIX不这么做,弄得长事务回滚只有死等。

jayli426 发表于 2010-03-12 16:20

回复 2# wolfop
大哥能否在具体的范例上指导我一下呢?

       例如一个表 table1
   user_iduser_name
    10000    tom
    10001    mike
    10002    jerry
    10003    john
   
    如果我删除一条记录
    delete * from table1 where user_id=10001
   
    那么照我现在的理解
    informix 会在 物理日志中保存一条
    table1
    user_iduser_name
    10001    mike
   或者确切的说这条记录对应的一个数据page
   
   然后会在逻辑日志里面记下
   delete * from table1 where user_id=10001
   这么一个操作
   
那么恢复的时候,是直接拷贝数据page恢复,
还是执行一个insert into table1(user_id,user_name) values(10001,'mike')
这样语句来恢复呢

大梦 发表于 2010-03-17 00:03

你删除的那条记录所在的页会先放在物理日志中,再把删除的那么记录写到逻辑日志中。
这时可以会有两种情况发生,可以理解为你的恢复:
1、你的事务rollback;
会直接从逻辑日志里面去CLR操作,回到删除前的状态。
2、系统意外宕机;
下次启动informix的时候会做Fast Recovery,这里会检查物理日志是否为空,不为空就把里面的页还原回以前位置,再把open 的事务rollback。

对应用来说是透明的!检查点的时候会逻辑的清空物理日志。

chenhuajun0311 发表于 2010-04-16 14:16

回复 6# 3sane


    我觉得这是结构本身的问题,ORACLE本身就有回滚段,存修改前的信息。这样在回滚时只要改个标识就可以。informix则是在物理日志里记录这些信息,回滚时只有一条一条往回做。这样唯一的优点就是数据结构没那么复杂。听IBM说这个已经建议过修改了,可一直没能实现。

i1888 发表于 2010-04-22 12:35

好像就是和oracle里undo一样的作用。
页: [1]
查看完整版本: 还是不理解物理日志的作用