oracleBLOCK(数据块)

  

  11.4块(数据块)   

  

  
  

  

  11.4.1块(数据块)的特点:   

  

  
  

  

  块是甲骨文进行存储空间IO操作的最小单位,块的管理方法是区的管理和段管理的具体体现:   

  

  
  

  

  1、自动管理方式如创建表空间时区为本地管理方式,并且将段的存储空间方式设置为汽车(即ASSM),该表空间的所有块均采用位图自动管理方式。这是系统默认的。   

  

  
  

  

  2、空闲列表方式(MSSM)引入FREELIST概念,以及PCTFREE和PCTUSED两个参数控制可用存储区的大小,避免行迁移现象的发生。这两个参数可在创建表空间时设置,也可在建立数据库的模式对象(表,索引)中设置。模式对象中设置的优先级比表空间的要高。就是说;如表和索引中没有设置,则按表空间的设置,如表空间也没设置,则按自动管理方式管理块。   

  

  
  

  

  数据块:oracle 11 g标准块:8 k,支持2-32k,有块头,自由空间、数据组成   

  

  
  

  

  数据块头部:   

  

  
  

  

  :事务槽,可以有多个ITL以支持并发事务,每当一个事务要更新数据块里的数据时,必须先得到一个ITL槽,然后将当前事务ID、事务所用的撤销数据块地址,SCN号,当前事务是否提交等信息写到ITL槽里。   

  

  :初始化事务槽的个数,表默认1,指数默认为2;   

  

  :最大的事务槽个数(默认255)   

  

  
  

  

  :行目录,指向空闲行起始和结束的偏移量。   

  

  
  

  

  考点:使块头增加的可能情况是,,。   

  

  
  

  

  空闲列表方式的数据块的管理:   

  

  
  

  

  :空闲列表中登记了可以插入数据的可用块,位置在段头,插入表行数据时首先查找该列的表。   

  

  
  

  

  :用来为一个块保留的空间百分比,以防止在今后的更新操作中增加一列或多列值的长度。达到该值,从freelist清除该块信息。   

  

  
  

  

  :一个块的使用水位的百分比,这个水位将使该块返回到可用列表中去等待更多的插入操作。达到该值,该块信息加入freelist   

  

  这。个参数在ASSM下不使用。   

  

  
  

  

  行链接:指一行存储在多个块中的情况,这是因为该行的长度超过了一个块的可用空间大小,即行链接是跨越多块的行。   

  

  
  

  

  行迁移:指一个数据行由于更新语句导致当前块被重新定位到另一个块(那里有充足的空间)中,但在原始块中保留一个指针的情形(ppt - ii - 470)。原始块中的指针是必需的,因为索引的ROWID项仍然指向原始位置。行迁移是更新语句当pctfree空间不足时引起的,它与插入和删除语句无关(考点)。   

  

  
  

  

     

  

  
  

  

  查看的列和列,当CHAIN_CNT有值时,看AVG_ROW_LEN,它表示行的平均长度(字节),如果AVG_ROW_LEN<块大小,那么行是迁移行,如果祝辞块大小,那么是链接行。   

  

  查看发生迁移或连接的行,使用分析表xx列表链接行;但命令需要将结果插入chained_rows表,创建此表用utlchained.sql或utlchn1。sql脚本。参见sql referenve中的分析命令。   

  

  
  

  

  完成;create table t1 (c1 varchar2 (20));   

  

  
  

  

  完成;   

  

  开始   

  

  因为我在1 . .1000年循环   

  

  插入t1值(空);   

  

  结束循环;   

  

  结束;   

  

/

  

  
  

  

  分析t1表确定无行迁移   

  

  
  

  

  完成;分析表t1计算统计;   

  

   oracleBLOCK(数据块)完成选择pct_free、pct_used avg_row_len, chain_cnt从user_tables table_name=癟1”;   

  

  AVG_ROW_LEN,它表示行的平均长度(字节)   

oracleBLOCK(数据块)