Oracle块中是否保留空值

读或写IP属地: 四川
字数 467

在看某些文章中有写到,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文件中发现多一个列出来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
1人点赞
总资产1共写了2.8W字获得14个赞共6个粉丝

推荐阅读更多精彩内容

  • 凌晨两点半,我收到了朋友小悦的微信。内容只有一句话,我想回家。小悦是我的高中同学兼好闺蜜,毕业填志愿五个填的不是东...
    叶青澜阅读 559评论 0 1
  • 上海的天气就如孩子的脸,说变就变,昨日的汗流浃背,今日上空就飘起了毛毛细雨,梅雨时节的上海,沿着南京西路缓慢的走着...
    邊思文阅读 402评论 2 4
  • 那一天,我来了 伴随的是20根肋骨折断的痛苦 是一块骨肉掉落的缺失 你用身体化作我的养料 我却贪婪地步步紧逼 你痛...
    冬日晚来秋阅读 1,078评论 0 2
  • Echo在Shirely离开北京的那天消失了。她那晚买了一个煎饼果子不加薄脆,她不爱吃薄脆。煎饼果子里加了一包卫龙...
    Shakuntala阅读 207评论 0 2