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计算统计;
完成选择pct_free、pct_used avg_row_len, chain_cnt从user_tables table_name=癟1”;
AVG_ROW_LEN,它表示行的平均长度(字节)