pctused、pctfree、initrans,maxtrans 等参数

来源:互联网 发布:手机淘宝申请售后不了 编辑:程序博客网 时间:2024/06/10 19:39
PCTUSED:是指当块里的数据低于多少百分比时,又可以重新被insert,一般默认是40,即40%,即:当数据低于40%时,又可以写入新的数据,这个时候处在下降期PCT_USEDNUMBER Minimum percentage of used space in a block; NULL for partitioned tables数据块的最小的使用比例Oracle会根据所操作块的PCTUSED属性判定此块是否可以被再次使用。PCTUSED为40表示当块中的可用容量达到60%时,块中插入了40%的数据此块被标记为可用,而PCTUSED为80表示当块中的可用容量只要达到20%时,即可被标记为可用,答案显而易见 pctfree:用来为一个块保留的空间百分比,以防止在今后的更新操作中增加一列或多列值的长度。    freelist:可用列表是表中的一组可插入数据的可用块。pctused与pctfree控制数据块是否出现在freelist中,pctfree控制数据块中保留用于update的空间,当数据块中的free space小于pctfree设置的空间时,该数据块从freelist中去掉,当块由于dml操作free space大于pct_used设置的空间时,该数据库块将被添加在freelist链表中。4:本地管理表空间和字典管理表空间的特点,ASSM有什么特点  本地管理表空间(Locally Managed Tablespace简称LMT):8i以后出现的一种新的表空间的管理模式,通过位图来管理表空间的空间使用。 字典管理表空间(Dictionary-Managed Tablespace简称DMT):8i以前包括以后都还可以使用的一种表空间管理模式,通过数据字典管理表空间的空间使用。 动段空间管理(ASSM):它首次出现在Oracle920里有了ASSM,链接列表freelist被位图所取代,它是一个二进制的数组,能够迅速有效地管理存储扩展和剩余区块(free block),因此能够改善分段存储本质.① MSSM:由你设置freelists、freelist groups、pctused、pctfree、initrans等参数来控制如何分配、使用段中的空间② ASSM:你只需控制一个参数pctfree,其他参数即使建了也将被忽略PCTFREE为10的时候,一个block的90%的空间可用来存放数据,而PCTFREE为40时,只有60%的空间可以用来存放数据,而总数据量不变,所以要分配更多的block来存放数据。测试在ASSM下pctused ,inittrans等参数无法修改:SQL>  select username,default_tablespace from dba_users where username='SCAN';USERNAME       DEFAULT_TABLESPACE------------------------------ ------------------------------SCAN       EXAMPLESQL> select tablespace_name, extent_management,segment_space_management from dba_tablespaces where tablespace_name='EXAMPLE';TABLESPACE_NAME        EXTENT_MAN SEGMEN------------------------------ ---------- ------EXAMPLE        LOCAL  AUTOSQL> create table t1 as select * from dba_users;表已创建。SQL> set linesize 200SQL> select PCT_FREE,PCT_USED,freelists,freelist_groups,ini_trans,max_trans ,BLOCKS,AVG_ROW_LEN,CHAIN_CNT from user_tables where table_name='T1';  PCT_FREE   PCT_USED  FREELISTS FREELIST_GROUPS  INI_TRANS  MAX_TRANS   BLOCKS AVG_ROW_LEN  CHAIN_CNT---------- ---------- ---------- --------------- ---------- ---------- ---------- ----------- ----------10  1   255SQL> alter table t1 pctused 50;表已更改。SQL> select PCT_FREE,PCT_USED,freelists,freelist_groups,ini_trans,max_trans ,BLOCKS,AVG_ROW_LEN,CHAIN_CNT from user_tables where table_name='T1';  PCT_FREE   PCT_USED  FREELISTS FREELIST_GROUPS  INI_TRANS  MAX_TRANS   BLOCKS AVG_ROW_LEN  CHAIN_CNT---------- ---------- ---------- --------------- ---------- ---------- ---------- ----------- ----------10  1   255SQL> alter table t1 pctfree 20;表已更改。SQL>  select PCT_FREE,PCT_USED,freelists,freelist_groups,ini_trans,max_trans ,BLOCKS,AVG_ROW_LEN,CHAIN_CNT from user_tables where table_name='T1';  PCT_FREE   PCT_USED  FREELISTS FREELIST_GROUPS  INI_TRANS  MAX_TRANS   BLOCKS AVG_ROW_LEN  CHAIN_CNT---------- ---------- ---------- --------------- ---------- ---------- ---------- ----------- ----------20  1   255可以看到pct_used 参数无法修改:SQL>  select PCT_FREE,PCT_USED,freelists,freelist_groups,ini_trans,max_trans ,BLOCKS,AVG_ROW_LEN,CHAIN_CNT from user_tables where table_name='T1';  PCT_FREE   PCT_USED  FREELISTS FREELIST_GROUPS  INI_TRANS  MAX_TRANS   BLOCKS AVG_ROW_LEN  CHAIN_CNT---------- ---------- ---------- --------------- ---------- ---------- ---------- ----------- ----------20 20   255SQL> alter table t1 maxtrans 300;alter table t1 maxtrans 300                        *第 1 行出现错误:ORA-02209: 无效的 MAXTRANS 选项值SQL>  alter table t1 maxtrans 256; alter table t1 maxtrans 256                         *第 1 行出现错误:ORA-02209: 无效的 MAXTRANS 选项值SQL>  alter table t1 maxtrans 254;表已更改。SQL>  select PCT_FREE,PCT_USED,freelists,freelist_groups,ini_trans,max_trans ,BLOCKS,AVG_ROW_LEN,CHAIN_CNT from user_tables where table_name='T1';  PCT_FREE   PCT_USED  FREELISTS FREELIST_GROUPS  INI_TRANS  MAX_TRANS   BLOCKS AVG_ROW_LEN  CHAIN_CNT---------- ---------- ---------- --------------- ---------- ---------- ---------- ----------- ----------20 20   255INI_TRANS可以修改 但是MAX_TRANS会被忽略

0 0
原创粉丝点击