zoukankan      html  css  js  c++  java
  • pctused、pctfree、initrans,maxtrans 等参数

    PCTUSED:是指当块里的数据低于多少百分比时,又可以重新被insert,一般默认是40,即40%,即:当数据低于40%时,又可以写入新的数据,这个时候处在下降期
    
    
    PCT_USED	NUMBER	 	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			       EXAMPLE
    
    SQL> select tablespace_name, extent_management,segment_space_management from dba_tablespaces where tablespace_name='EXAMPLE';
    
    TABLESPACE_NAME 	       EXTENT_MAN SEGMEN
    ------------------------------ ---------- ------
    EXAMPLE 		       LOCAL	  AUTO
    
    SQL> create table t1 as select * from dba_users;
    
    表已创建。
    
    SQL> set linesize 200
    
    
    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	   255
    
    
    
    
    SQL> 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	   255
    
    SQL> 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	   255
    
    SQL> 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	   255
    
    INI_TRANS可以修改 但是MAX_TRANS会被忽略

  • 相关阅读:
    Max History CodeForces
    Buy a Ticket CodeForces
    AC日记——字符串的展开 openjudge 1.7 35
    AC日记——回文子串 openjudge 1.7 34
    AC日记——判断字符串是否为回文 openjudge 1.7 33
    AC日记——行程长度编码 openjudge 1.7 32
    AC日记——字符串P型编码 openjudge 1.7 31
    AC日记——字符环 openjudge 1.7 30
    AC日记——ISBN号码 openjudge 1.7 29
    AC日记——单词倒排 1.7 28
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352108.html
Copyright © 2011-2022 走看看