数据格式

举报
宁谷花雨 发表于 2024/08/28 19:22:10 2024/08/28
【摘要】 1、oracle1)row headerrow overheadNumber of columns:1字节或3字节Cluster key idRowid of chained row pieces2)column dataColumn length:为了节省空间,列中的null仅存储列长度(零),Oracle不存储空列的数据。此外,对于尾随的空列,Oracle甚至不存储列长度。Column ...

1oracle

1)row header

row overhead

Number of columns:1字节或3字节

Cluster key id

Rowid of chained row pieces

2)column data

Column length:为了节省空间,列中的null仅存储列长度(零),Oracle不存储空列的数据。此外,对于尾随的空列,Oracle甚至不存储列长度。

Column value

 

 

1)row是由一个或多个piece组成的。不管被分成多少个row piece存储,每一个piece的rowid都是相同的。通过这一点就可以把数据“链接”起来。

2)如果columns < 256,且能在一个block中存储,那么只有一个 piece。

3)如果columns >= 256,且能在一个block存储,那么每行的第256列以后形成的piece会与1-255列组成的piece链接在一起,这种情况叫做intra-blockchaining; 即跨内链接。

4)如果不能在一个block中存储,那么就会有多个pieces chained在一起。每个piece在一个block中; 或者原来以一个piece存储在一个block中,后来因update,导致在一个block中存储不下,必须跨块存储; 这种情况是跨块链接。不管是块内链接还是块间链接,piece之间都是通过piece的rowid来连接的,实际上相当于一个单向链表。

 

 

rowiddata object number32bit + relative file number10bit + block number22bit + row number16bit

10个Byte,18个字符形式显示,每位采用64位编码,分别用A~Z、a~z、0~9、+、/共64个字符表示。A表示0,B表示1,……Z表示25,a表示26,……z表示51,0表示52,……,9表示61,+表示62,/表示63。

 

2、mysql

1)compact格式

     变长字段长度列表

     null值列表:一个字段一个bit

     记录头信息

     rowid

     trx_id

     roll_ptr

     列值

 

2)dynamic格式

 5.7 之后默认行格式是 Dynamic ,这俩行格式和 Compact 行格式挺像,只不过在处理行溢出数据时不同,它们不会在记录的真实数据处存储字段真实数据的前 768 个字节,而是把所有的字节都存储到其他页面中,只在记录的真实数据处存储其他页面的地址。

 

 

3、postgresql

Xmin

Xmax

Cid

Ctidblock + offset

Infomask

Hoff:用户数据的偏移量

null bitmap:每个字段对应一个bit,变长数组

data

 

Tuple头部是由23byte固定大小的前缀和可选的NullBitMap构成,一个空行的大小是24byte,说明最后一个byte被对齐了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。