美文网首页我爱编程
Oracle块中是否保留空值

Oracle块中是否保留空值

作者: 读或写 | 来源:发表于2016-09-01 11:36 被阅读0次

    在看某些文章中有写到,oracle在块中不会存储空列。我自己试了一把,发现叙述有误。现在将我的实验结果记录以下。

    先上结论:

    1、对于空值列不是最后一个字段的oracle会存储在块中,dump出来的值是:

    col  0: *NULL*

    col  1: *NULL*

    col  2: [ 5]  c4 03 07 3a 34

    col  3: [ 7]  54 52 49 47 47 45 52

    col  4: [ 5]  56 41 4c 49 44

    col  5: [ 7]  78 9b 0c 0a 01 12 3a

    col  6: [ 6]  61 62 63 31 32 33

    2、空值的列是最后一个列,那么将不会存储在块中

    tl: 55 fb: --H-FL-- lb: 0x0  cc: 6《===这个有6个列

    col  0: *NULL*

    col  1: [24]

    53 59 53 5f 49 4c 30 30 30 30 30 38 36 34 36 36 43 30 30 30 30 39 24 24

    col  2: [ 5]  c4 03 07 3a 2a

    col  3: [ 5]  49 4e 44 45 58

    col  4: [ 5]  56 41 4c 49 44

    col  5: [ 7]  78 9b 0c 09 0f 12 3a

    tab 0, row 1, @0x334

    tl: 40 fb: --H-FL-- lb: 0x1  cc: 7《===这个有7个列,表一共有7个列,对比证明结论2

    col  0: *NULL*

    col  1: *NULL*

    col  2: [ 5]  c4 03 07 3a 34

    col  3: [ 7]  54 52 49 47 47 45 52

    col  4: [ 5]  56 41 4c 49 44

    col  5: [ 7]  78 9b 0c 0a 01 12 3a

    col  6: [ 6]  61 62 63 31 32 33

    实验方法

    1、创建一个简单的表

    2、插入一些数据

    3、update为空值或者''

    4、dump数据块

    另外在实验中也发现,最后一个空值字段在update为非空并且commit后,不会立马更改块中的内容,需要等待数据刷入磁盘后,才会在dump文件中发现多一个列出来。

    相关文章

      网友评论

        本文标题:Oracle块中是否保留空值

        本文链接:https://www.haomeiwen.com/subject/apbcettx.html