ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 段空间管理

段空间管理

原创 Linux操作系统 作者:Jack_Miller 时间:2012-03-09 18:40:24 0 删除 编辑
Oracle的段空间管理:
  1. 手动段空间管理:DBA设置freslistsfreelist groupspctused和其他参数来控制如何分配使用重用段中的空间。
  2. 自动段空间管理(ASSM):DBA只需设置一个参数pctfree,其他都由Oracle自动管理。
手动段空间管理由freelists(空闲块列表)管理段空间,如果只有一个freelists,一次只有一个事务能查看和修改这个freelists,事务之间必须相互等待。如果有多个freelists和freelist groups,就能提高并发性,因为事务可以查看不同的freelists,而不会相互竞争。

  1. 高水位线(HWM)
如果把表想象成从左到右依次排开的一系列块,HWM就是包含了数据的最右边的块。
随着数据的增加,HWM会升高。但如果用delete语句删除表中的数据,HWM不会随之降低。这会影响全表扫描的效率,因为Oracle在全表扫描时会扫描HWM下的所有块,即使其中不包含任何数据。truncate会把表中的HWM重置为0,还会截断索引,所以如果打算删除表中所有的行,应该选择truncate。

在手动段空间管理下,每个对象至少有一个freelist,freelists记录HWM以下有空闲空间的数据块,就像用一条线把有空闲空间的数据库串起来一样。仅当freelist为空时才使用HWM以上的数据块,并推进HWM,将新的数据库加到freelist中。
为一个表段增加freelist
alter table emp storage( freelists 5);
使用多个freelist时,会有一个主freelist和多个进程freelist,对于一个给定的会话,会根据会话的散列值为其指定一个进程freelist。每个进程只在自己的freelist上寻找空闲块,如果没有会求助主freelist,如果主freelist中也没有空闲块了,会推进HWM,甚至要申请新的extent。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25791987/viewspace-718202/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 虚拟列
请登录后发表评论 登录
全部评论

注册时间:2011-12-09

  • 博文量
    25
  • 访问量
    68373