大白话介绍pctfree,pctused
pctfree:为数据块保留的空间百分比,最少留出多少空间给将来的insert用.
默认是10,如果数据块已用了90%的空间了,就不能被insert了,只能被用于update.
pctused:数据块内数据占用的空间,低于多少百分比时,再次可以insert数据.
默认是40,就是说块内的数据占用40%以下的空间,此时这个块又能insert新的数据了.
我就爱例子,举个例子:
一个块能放100个数据,pctfree为10,pctused为40:
insert数据一直到这个块有了90个数据,此时不能再存放新的数据,预留10%给将来的update用.
你又不断删除数据,删了10个,此时80个数据占用了块的80%空间,你想这个块能insert新数据了吧?NO
你必须删掉51个数据,块里数据39个占用39%的空间时,才能再次向这个块里insert数据.
注意!如果表空间上启用了ASSM(自动段空间管理),在建立表的时候,只能指定pctfree!
如果不是ASSM,可以指定pctfree和pctused.
看看各个表的pctfree和pctused值
select a.table_name, a.pct_free, a.pct_used, a.* from user_tables a;
哪些表使用自动管理表空间
select tablespace_name,segment_space_management from user_tablespaces;
pctfree:为数据块保留的空间百分比,最少留出多少空间给将来的insert用.
默认是10,如果数据块已用了90%的空间了,就不能被insert了,只能被用于update.
pctused:数据块内数据占用的空间,低于多少百分比时,再次可以insert数据.
默认是40,就是说块内的数据占用40%以下的空间,此时这个块又能insert新的数据了.
我就爱例子,举个例子:
一个块能放100个数据,pctfree为10,pctused为40:
insert数据一直到这个块有了90个数据,此时不能再存放新的数据,预留10%给将来的update用.
你又不断删除数据,删了10个,此时80个数据占用了块的80%空间,你想这个块能insert新数据了吧?NO
你必须删掉51个数据,块里数据39个占用39%的空间时,才能再次向这个块里insert数据.
注意!如果表空间上启用了ASSM(自动段空间管理),在建立表的时候,只能指定pctfree!
如果不是ASSM,可以指定pctfree和pctused.
看看各个表的pctfree和pctused值
select a.table_name, a.pct_free, a.pct_used, a.* from user_tables a;
哪些表使用自动管理表空间
select tablespace_name,segment_space_management from user_tablespaces;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25025926/viewspace-1075020/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25025926/viewspace-1075020/