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会被忽略

  • 相关阅读:
    TX2 刷机教程
    ROS2 树莓派SBC镜像安装
    OP3 默认ID图
    OP3 镜像恢复
    ROS2 BringUp
    学习笔记3:Linux面试题
    学习笔记2:Linux简单指令
    学习笔记1:Git简单指令
    编程小白入门分享五:Vue的自定义组件
    编程小白入门分享四:Vue的安装及使用快速入门
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352108.html
Copyright © 2011-2022 走看看