文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Oracle学习(1)——BLOCK

Oracle学习(1)——BLOCK

时间:2010-09-25  来源:smallhonker

BLOCK

BLOCK是ORACLE下I/O的最小单位(换句话说,一次读出的数据至少是一个BLOCk)。    ORACLE的BLOCk是由一个或多个OS BLOCk组成的。    ORACLE的BLOCK是在创建TABLESPACE的时候就划分好的,之后分配使用。    ORACLE的初始化参数DB_BLOCK_SIZE就是指定BLOCK大小的。       BLOCK的结构: HEADER, FREE SPACE , DATA SPACE。    HEADER部分和DATA SPACE从BLOCK的两头向中间扩展,   中间未用的部分就是FREE SPACE。      有4个参数控制着BLOCK的分配:INITTRANS, MAXTRANS, PCTFREE, PCTUSED。    描述如下:BLOCK下包含数据允许最大的操作事务个数取决于BLOCK某种空间(TRANSACTION SLOT)的分配。 允许的事务越多,需要分配越多的TRANS SLOT。 INITTRANS和MAXTRANS就是规定这个TRANSACTION SLOT的。      PCTFREE和PCTUSED是规定DATA SPACE和FREE SPACE之间关系的: 当一个空的BLOCK开始写入数据后,DATA SPACE部分越来越大,同时,FREE SPACE越来越小。当数据写入到一定程度时, FREE SPACE占全部空间等于PCTFREE时,这个BLOCK就不能再写入新的记录了。 剩下的这部分(PCTFREE*DB_BLOCK_SIZE)空间用于给现有记录update使用。后续的insert会导致从FREE BLOCK列表中拿另外一个BLOCK完成。当BLOCK中记录通过delete时,BLOCK的DATA SPACE逐渐减少。    如果BLOCK此时是一个FULL BLOCK,当DATA SPACE降低置DB_BLOCK_SIZE*PCTUSED后,ORACLE就认为这个BLOCK是个FREE的BLOCK,就会放入FREE LIST ,可以继续插入数据了。可见,PCTFREE和PCTUSED是两个水位线,用来限制FREE、USED两个空间分隔线的位置的。      有两种BLOCK的空间管理模式:AUTO和MANUL。    使用前者,ORACEL会自动管理INITTRANS, MAXTRANS, PCTFREE, PCTUSED 这几个参数。    如下是创建一个AUTO管理的TABLESPACE:      CREATE TABLESPACE data02          DATAFILE '/u01/oradata/data02.dbf' SIZE 5M          EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K          SEGMENT SPACE MANAGEMENT AUTO; ———————————————————————————————————————————————          区 extent     EXTENTS是若干连续的BLOCKS,ORACLE每次给SEGMENT扩空间的时候,是以EXTENTS为单位的。     在建TABLE/INDEX时几个参数决定了EXTENTS的分配特性:INITIAL EXTENT(单位:K)、NEXT EXTENTS(单位:K)、PCT INCREASE、 MIN EXTENTS(单位:个)、MAX EXTENTS(单位:个)。      基本过程是这样:当SEGMENT创建时,分配的第一个EXTENTS 大小为INITIAL EXTENT参数指定的大小。      如果SEGMENT的空间不够,会分配第2个、第3个...EXTENTS。      第2个EXTENT的大小为NEXT EXTENTS,      第3个的大小为NEXT EXTENTS*(1+PCT INCREASE),      每次增加PCT INCREASE,以此类推。       每个TABLESPACE都有一个FREE EXTENTS LIST。      当需要新的EXTENTS时,ORACLE会从这个LIST中取一个FREE EXTENT分配给需要的SEGMENT。      当SEGMENT释放空间时,空闲的EXTENTS会加入到这个LIST中以便后续使用。   段 segment     CREATE TABLE/INDEX     的STORAGE字句,用来指定存储特性。如果没有指定,按照TABLESPACE的STORAGE属性来,如果TABLESPACE也没有指定STORAGE属性,则按照ORACLE的默认值来。     通常,一个TABLE对应一个SEGMENT(PARTITION的除外)。     一个SEGMENT只能在一个TABLESPACE内部。     对于PARTITIONED表每个PARTITION占一个SEGMENT,每个SEGMENT可以在不同的TABLESPACE中。

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载