oracle数据库表_笔记5:PCTFREE和PCTUSED
PCTFREE和PCTUSED
一般而言,PCTFREE参数用来告诉Oracle应该在块上保留多少空间来完成将来的更新。默认情况下,这个值是10%。如果自由空间的百分比高于PCTFREE中指定的值,这个块就认为是“自由的”。
PCTUSED则告诉Oracle当前不“自由”的一个块上自由空间百分比需要达到多大才能使它再次变为自由的。默认值是40%。
根据你使用的是ASSM表空间还是MSSM表空间,这两个参数的实际作用会有所不同。使用MSSM时,这些参数设置控制着块何时放入FREELIST中,以及何时从FREELIST中取出。如果使用默认值:PCTFREE为10,PCTUSED为40,那么在块达到90%满之前(有10%以上的自由空间),这个块会一直在FREELIST上。一旦达到90%,就会从FREELIST中取出,而且直到块上的自由空间超过了块的60%时,
才会重新回到FREELIST上,在此之前,这个块将一直不在FREELIST上。
使用ASSM时,PCTFREE仍然会限制能否将一个新行插入到一个块中,但是它不会控制一个块是否在FREELIST上,因为ASSM根本不使用FREELIST。在ASSM中,PCTUSED将被忽略。
PCTFREE有3种设置:太高、太低和刚好。如果把块的PCTFREE设置得太高,就会浪费空间。如果把PCTFREE设置为50%,而从未更新数据,那么每个块都会浪费50%的空间。不过,在另一个表上,50%可能非常合理。如果行最初很小,现在想将行的大小加倍,但是倘若PCTFREE设置得太小,更新行时就会导致行迁移。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5279.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
