Phone:18180207355 提供专业Oracle&MySQL数据恢复、性能优化、迁移升级、紧急救援等服务

最近在一个优化项目中,通过awr报告发现table fetch continued row 指标很高,怀疑是行迁移/链接比较严重。
后来经过沟通发现,原来客户的数据库中存在几个table,其column 数目超过255. 针对超过255列的行数据.如下:

    分享到:
  • SUNNY

    你DUMP BLOCK的命令是什么啊?

  • Travel

    roger,感觉你理解错误了

    H: Head of row piece
    K:Cluster key
    C:Cluster table member
    D:Deleted row
    F:First data piece,
    L:Last data piece
    P:First column continues from previous row
    N:Last column continues

    #define KDRHFK 0×80 Cluster Key
    #define KDRHFC 0×40 Clustered table member
    #define KDRHFH 0×20 Head piece of row
    #define KDRHFD 0×10 Deleted row
    #define KDRHFF 0×08 First data piece|
    #define KDRHFL 0×04 Last data piece
    #define KDRHFP 0×02 First column continues from Previous piece
    #define KDRHFN 0×01 Last column continues in Next piece

    • oracledba

      我的理解没有问题。 nrid表是next row piece。前面的row 0从dump来看是row piece 1. 下面的row 1对应row piece 2. 但是实际上oracle读取的数据是先读下面row 1. 这个从前面的bbed dump看出来。 其实row 1的数据是在前面的。 从结构上来讲,row 0是第2个row piece。

    • xccheese

      博主没有理解错,是这样的,因为oracle在写数据的时候是从底部往上写的,所以读数据的时候会先读取下面的。 但是说消耗的IO一样我不太赞同。

  • Lunar

    roger,我也觉得你理解有问题。Oracle每次读一个block(非Exadata的系统),因此,是否会消耗额外的IO,需要看是否读取了多余的块,你这样构造的数据,读取的时候,IO没有太大改变,但是生产的数据,可能是读取了多余的block…………

    • oracledba

      针对block内的啊

18180207355
加Q咨询