首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >《Oracle Concept》第二章 - 13

《Oracle Concept》第二章 - 13

作者头像
bisal
发布2019-03-15 11:31:10
发布2019-03-15 11:31:10
4220
举报

行存储

数据库用数据块来存储行数据。表中每行会包含不多于256列的数据。如果可能,Oracle会将每行作为单独的行片存储。然而,如果一行的所有数据不能插入单独的一个数据块,或者对现有行数据的更新,导致一行数据超过了数据块的容量,此时数据库就会使用多个行片存储这一行(参考“数据块格式”)。簇表中的行和非簇表的行包含相同的信息。此外,簇表中的行还会包含指向他们所属的簇键的信息。

行片

rowid是一个高效的代表某行的10个字节的物理地址。在“rowid数据类型“一节中进行过解释,堆表中的每行都有一个唯一的rowid值,对应到行片的物理地址。对于簇表,属于不同表的行,但是在相同的数据块中存储,就会有相同的rowid。

Oracle内部使用rowid来构建索引。例如,B树索引的每个键值会关联到一个rowid,利用他可以快速指向关联行的地址(参考“B树索引")。物理rowid提供访问表行数据最快的访问方式,能让数据库用最少一个I/O检索到行数据。

参考:

《Oracle Concept》的“rowid格式”章节。

什么是rowid?》。

Null值的存储

null表示某列的值为空。null可以表示缺少值、未值、或者不可用数据。

如果null位于两个数据列之间,那么就会在数据库中存储null。需要1个字节存储列的长度(0)。行尾的null无需存储,因为新的一行的行头会标记前一行的尾列是null。例如如果一张表的最后三个列是null,则这些列不用存储数据。

参考:

《Oracle Database SQL Language Reference》了解更多关于null值的信息。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年02月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档