Oracle的逻辑存储管理
ORACLE在逻辑存储上分4个粒度 ,由大到小为: 表空间,段,区 和 块.
块Block
块: 是粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是说当ORACLE从数据文件读数据时,是读取多少个块,而不是多少行. 每一个Block里可以包含多个row.
数据块的大小是通过kb字节个数来指定的,默认为8KB。相关参数为db_block_size
sql> show parameter db_block_size
NAME TYPE VALUE
----------------------- --------------------- ---------
db_block_size integer 8192
区Extent
区: 由一系列相邻的块而组成,这也是ORACLE空间分配的基本单位,举个例子来说,当我们创建一个表Dave时,首先ORACLE会分配一区的空间给这个表,随着不断的INSERT数据到Dave,原来的这个区容不下插入的数据时,ORACLE是以区为单位进行扩展的,也就是说再分配多少个区给Dave,而不是多少个块.
段Segment
段: 是由一系列的区所组成,一般来说,当创建一个对象时(表,索引),就会分配一个段给这个对象. 所以从某种意义上来说,段就是某种特定的数据.如CREATE TABLE Dave,这个段就是数据段,而CREATE INDEX ON Dave(NAME),ORACLE同样会分配一个段给这个索引,但这是一个索引段了.查询段的信息可以通过数据字典: SELECT * FROM USER_SEGMENTS来获得.