数据块结构

来源:互联网 发布:c语言标志变量flag 编辑:程序博客网 时间:2024/06/03 21:31
数据块结构 - m15142436758 - 简单的博客数据块结构 - m15142436758 - 简单的博客
 
    数据块头包括
* Block type
1=undo segment header, 2=undo segment block, 5=data segment header, 7=temporary table, 11=data file header, 14=Unlimited rollback segment header, 15=Unlimited deferred rollback segment header, 16=Unlimited data segment header, 17=Unlimited data segment header with FL groups, 18=Extent map block
* Block format
Is it an oracle 7 or oracle 8, (or 9, or 10???) formatted block?
* Relative database address
* SCN
* SCN sequence number
* Check value
Is used for integrity checking at the block level if db_block_checksum is set.
* Tail
The tail is not at the beginning of a block but at its end: it is used as a block consistency check. That is, the value must be equal to SCN + block type + SCN sequence number.
2 表目录
如果这个数据块中有某个表的行,则将记录这个表的信息
3 行目录
行的地址偏移(相当于指针)
每条记录占 2 字节(byte)空间

其他
1    、如果表中一行数据量太大会产生行链接,(生成一个指针指向其他包含相同行的数据的数据块,指针记录在行头的链接rowid中)

2     、当一个表超过 255 列时,每行第255列之后的数据将作为一个新的行片断(row piece)存储在相同的数据块中,这被称为块内链接(当一个行为块内链接时,用户可以从同一数据块中访问此行的全部数据。如果一个数据行位于同一数据块内,那么访问此行不会影响 I/O 性能,因为访问此行不会带来额外的 I/O 开销

3     、列长存储于列值之前,如列值不超过 250 字节,那么 Oracle 使用 1 字节存储其列长;如列值超过 250 字节,则使用 3 字节存储其列长

4      、为了节约存储空间,如果某列值为空(null),那么数据库中只存储其列长(column length)(值为 0),而不存储任何数据。对位于一行末尾的空列值(trailing null column),数据库中将列长也忽略不予存储(所以可能为null的列最好放在最后,这样可以节省空间)

段是如何管理数据块的
段管理方式
①ASSM:自动管理方式(BMB段:BitmapManagedSegments),使用位图管理段中的数据块空闲空间,大并发量。
②MSSM:手工管理方式(FreeList),使用空闲列表来管理段中的数据块空闲空间,串行操作容易引起段头的争用

0 0
原创粉丝点击