如题,建表时pctfree和pctused的设置应该遵循什么原则呢?对于频繁insert,update的表和只select很少insert,update的表,这两个参数应该设置为多少合适?小弟基础不太好,还望高手详解,谢谢!~~
解决方案 »
- 这条sql语句怎么写?
- toad 11 乱码问题
- 请帮忙改一个sql
- 一条sql语句。。
- 请教一个单表查询的sql
- 请问查一个用户下所有对象所占用的空间多少该怎么做.在线等.
- 严重值得讨论的问题:varchar2类型的字段为空(null)时的,几个字段或者(变量)互相比较的问题,高手一定来给我上课!
- 安装好oracle后,用system进去,老是提示说tns没有监听,怎么回事?在线急~!!!!!!!!!!!!!
- oracle与sql server2000互导
- oracle数据库多用户的问题
- 求助一个简单的pl/sql语句,报错:内存不够。
- oracle startup mount exclusive问题
– Default 10
– Zero if no UPDATE activity
– PCTFREE = 100 × upd / (average row length)
• PCTUSED
– Default 40
– Set if rows deleted
– PCTUSED = 100 – PCTFREE – 100 × rows × (average row length) / blocksize
其中,
upd : the average amount added by updates, in bytes。This is determined by
subtracting the average row length of intercurrent average row length;
average row length:在运行了analyize命令之后,这个值可以从dba_tables中的avg_row_len列中获得。
rows : the number of rows to be deleted before free list maintenance occurs。
。数据块的大小有DB_BLOCK_SIZE决定,并且只有通过重建数据库来得到调整。空间计算的根据来自于数据块。
。数据块由数据块头,数据区组成。数据区的使用由PCTFREE,PCTUSED控制。当INSERT发生时,
PCTFREE决定了该块所能容纳的最多的数据,即,剩余空间占数据块实际空间的百分比不小于PCTFREE。
空间估算中PCTFREE是很一个很重要的参数。
对于在表上进行的事务(TRANSACTION)类型要有一个清晰的认识,因为这会帮助如何更好的确定PCTFREE & PCTUSED。
例如:
如果PCTFREE的值太大,记录又可能很长,这会引起行链接(ROW-CHAINING),同时空间利用率也不高;
如果PCTFREE的值太小,会影响块数据记录的增长,容易引起行迁移(ROW-MIGURATING);
如果PCTUSED的值太大,空间上似乎没什么问题,但数据块的操作上又有潜在的性能问题,因为数据块需要在
FREELIST上反复搬动;
如果PCTUSED的值太小,则又出现了空间利用率不高的问题。
PCTFREE & PCTUSED表示的是DB_BLOCK_SIZE减去数据块头后的百分比值
这些参数也可以在表建好后再改,然后move tablespace