段空间管理中的PCTFREE、PCTUSED和FREELISTS
来源:互联网 发布:交友吧软件怎么样 编辑:程序博客网 时间:2024/05/17 08:07
在早期的手动空间管理阶段,Oracle通过一种列表结构FREE LIST来记录数据块的使用情况。需要为每个段设置几个参数。
PCTFREE定义数据块中空闲空间百分比
PCTUSED定义数据块被使用的空间百分比
FREELISTS每个段使用的空闲列表数量
PCTFREE存储参数告诉ORACLE什么时候应该将数据块从对象的空闲列表中移出。ORACLE的默认参数是PCTFREE=10;也就是说,一旦一个INSERT操作使得数据块的90%被使用,这个数据块就从空闲列表(free list)中移出。
PCTUSED存储参数告诉ORACLE什么时候将以前满的数据块加到空闲列表中。当记录从数据表中删除时,数据库的数据块就有空间接受新的记录,但只有当填充的空间降到PCTUSED值以下时,该数据块才被连接到空闲列表中,才可以往其中插入数据。PCTUSED的默认值是PCTUSED=40。
存储参数规则小结
(1)PCTUSED较高意味着相对较满的数据块会被放置到空闲列表中,从而有效的重复使用数据块的空间,但会导致I/O消耗。PCTUSED低意味着在一个数据块快空的时候才被放置到空闲列表中,数据块一次能接受很多的记录,因此可以减少I/O消耗,提高性能。
(2)PCTFREE的值较大意味着数据块没有被利用多少就从空闲列表中断开连接,不利于数据块的充分使用。PCTFREE过小的结果是,在更新时可能会出现数据记录迁移(Migration)的情况。(注:数据记录迁移(Migration)是指记录在是UPDATE操作扩展了一个VARCHAR2类型的列或BLOB列后,PCTFREE参数所指定的空间不够扩展,从而记录被ORACLE强制迁移到新的数据块,发生这种情况将较严重的影响ORACLE的性能,出现更新缓慢)。
当进行大量更新操作,并且会增加行长度,这时可以设置大的pctfree;当进行大量插入和删除操作,并且不会引起行长度的增加,设置高的pctused,可以快速删除来重新利用释放的空间。
通过设置合适的pctfree和pctused 来避免行链接和行迁移。
行链接是指如果一个数据块无法装下一行的数据,会把为行分配另一个数据块。
行迁移是指如果在一个数据块内进行大量的更新操作,从而引起行长度增加,而此时块内的空闲空间又无法容下这个行,ORACLE会把整行移到另一个数据块,而在原来的块中保留一个指向这个新数据块的指针。
如果PCTFREE的值太大,记录又可能很长,这会引起行链接(ROW-CHAINING),同时空间利用率也不高;
Row Chaining在初次insert时发生,如果记录大小超过了整个block可用大小,那么记录将会跨越多个block。- PCTFREE的值太大,block的可用于insert的空间就小,so...
如果PCTFREE的值太小,会影响块数据记录的增长,容易引起行迁移(ROW-MIGURATING);
Row Migrating在update的时候发生,一条原来存储在一个block中的记录由于更新而发生记录长度变大的时候,需要使用block中的空闲空间,如果空闲空间不够,那么整条记录会全部迁移到一个新的block中。- PCTFREE的值太小,block可用于update的空间就小,so...
pctused的值关系到block是否进入freelist,低于pctused的进入。
如果pctused过大,那么可能仅仅是删除了一点儿内容,这个block就又重新被标志为free了,当又增加了一点儿内容(达到了1-pctfree的值),又被从freelist中摘除,频繁操作freelist是影响性能的。
如果pctused过小,那么即使删除了很多内容,也许这个block仍然不被放到freelist中也就仍然不能被用于insert新数据,所以空间浪费。
- 段空间管理中的PCTFREE、PCTUSED和FREELISTS
- oracle 中的pctused、pctfree、inittrans、MAXTRANS、FREELIST GROUPS 和FREELISTS参数
- 关于ASSM和pctfree,pctused,freelists,freelist groups参数
- ORACLE中的PCTFREE和PCTUSED
- Oracle中的pctfree和pctused
- 学习oracle中的PCTFREE和PCTUSED
- PCTFREE和PCTUSED用法
- PCTFREE和PCTUSED
- 详解pctused和pctfree
- PCTUSED和PCTFREE
- PCTFREE和PCTUSED
- oracle pctfree和pctused
- pctfree和pctused
- 关于参数pctfree和pctused
- oracle pctfree和pctused详解
- oracle pctfree和pctused详解
- oracle pctfree和pctused详解
- oracle pctfree和pctused详解
- error PRJ0050: 未能注册输出,请确保您有修改注册表的相应权限
- XMPP协议学习笔记四(Openfire服务器启动过程)
- html中的innerHTML的用法
- struts2属性和方法问题
- 关于linux下tmp文件夹
- 段空间管理中的PCTFREE、PCTUSED和FREELISTS
- 公用sqlcommand 函数
- JUC之Atomic
- mysql导入导出
- 构建高效的团队协作工具(三) Confluence安装配置
- 使用hibeinateTemplate进行批量删除的两种方法
- 线段树模板(插入,搜索)
- android云端网游开发设想
- 据说看完这21个故事的人,30岁前都成了亿万富翁。你是下一个吗?