oracle tablespace pctfree pctused

2、oracle pctfree和pctused详解

1、创建表时候,注意PCTFREE参数的做用html

      PCTFREE:为一个块保留的空间百分比,表示数据块在什么状况下能够被insert,默认是10,表示当数据块的可用空间低于10%后,就不能够被insert了,只能被用于update;即:当使用一个block时,在达到pctfree以前,该block是一直能够被插入的,这个时候处在上升期。oracle

      PCTUSED:是指当块里的数据低于多少百分比时,又能够从新被insert,通常默认是40,即40%,即:当数据低于40%时,又能够写入新的数据,这个时候处在降低期。post

 

2、举例说明url

      假设你一个块能够存放100个数据,并且PCTFREE 是10,PCTUSED是40,则:不断的向块中插入数据,若是当存放到90个时,就不能存放新的数据,这是受pctfree来控制,预留的空间是给UPDATE用的。spa

      当你删除一个数据后,再想插入个新数据行不行?不行,必须是删除41个,即低于40个之后才能插入新的数据的,这是受pctused来控制的。htm

      注意:若是表空间上启用了ASSM,在创建表的时候,只能指定PCTFREE,不然可用指定PCTFREE和PCTUSED。blog

             

 

3、调整pctfree与pctused
一、经过user_tables的pct_free,pct_used来查看
select a.table_name, a.pct_free, a.pct_used, a.* from user_tables a;
说明:
pctfree表示用于保留更新操做的百分比,若是超过该值不能插入数据。
pctused表示数据所占最低百分比,若是达到pctfree时不能插入,delete后若是达到pctused才能够用来insertget

 

二、若是你使用的是自动管理表空间pctused不须要设置
altertable tablename pctfree values;
说明:
pctfree默认是10,主要看更新的数据有多大,能够查看表的max_row_len若是很大又频繁更新能够考虑增长该值。
pctused主要看删除数据的大小,若是很大能够调大该值,若是不是很频繁能够设置小一些30-40
pctused+pctfree<90it

 

三、查看自动管理表空间
select tablespace_name,segment_space_management from user_tablespaces; --segment_space_management为auto表示自动管理表空间
主要起到节省表空间的做用。table

相关文章
相关标签/搜索