Oracle 使用一个或多个行片段(row piece) 来存储表的每一行数据的前255列。当一个数据块(data block)可以容纳一个完整的数据行时(且表的列数小于等于256),那么此行就可以使用一个行片段来存储。当插入(insert)一个数据行,或更新(update)已有数据行时,数据行容量大于数据块容量,那么Oracle将使用多个行片段来存储此行。
一个行片段由行头(row header)及列数据(column data) 构成。
列数据部分包含了各列的列长及列值。
行头包含:行管理开销(row overhead),列数,cluster key ID,chained row pieces但rowid。
如果一行能被存储与一个数据块中, 那么其行头所需容量将不少于3字节(byte)。在行头信息之后依次存储的是各列的列长及列值(column value)。
列长存储与列值之前,如果列值不超过过250字节,那么oracle使用1字节存储其列长;如列值超过250字节,则使用3自己存储其列长。
列数据(column data)所需的存储空间取决于此列的数据类型。如果某列的数据类型为变长的,那么存储此列值所需的空间可能会随着数据更新而增长或缩小。
为了节约存储空间,如果某列为空,那么数据库中只存储其列长,而不存储任何数据,对位于一行末尾的空列值,数据库中将列长也忽略不存储。
如果一个表的最后3列均为空,则数据库中不会存储这3列的任何信息。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22206864/viewspace-746027/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22206864/viewspace-746027/