Oracle 逻辑存储结构之表空间管理和段空间管理

1.总体结构
  表空间 tablespace
  段 segment
  区 extent
  块 block
段中的区可以属于同一个表空间下的不同数据文件,但是同一个区只能属于一个数据文件。

2.逻辑空间管理
Oracle存在分配和回收extents的问题,不同类型的表空间管理extents的方式不一样。

2.1 本地管理的表空间(默认) Locally managed tablespaces (default)
  使用位图管理extents。在数据文件的头部存放位图来记录使用和空闲空间。位图的每一位对应一组block。
 
  本地管理的表空间好处:
      避免使用使用数据字典管理extents。数据字典管理时,不管是分配还是释放空间,都要执行递归sql,操作数据字典表。
      自动跟踪到相邻的空闲空间,不需要去合并空闲空间
      自动决定extent的大小,也可以指定所有extents的一样大
 
  这种情况下的segment管理方式也分为两种:
    2.1.1 自动段空间管理 automatic segment space management (ASSM),使用位图bitmap管理段空间
    
    优势:
        简化管理。不需要再去指定很多存储参数,只需要关注一个参数pctfree,这个参数指定一个块需要保留多少空间给未来的update用。
        提高了并发能力。不同的事务可以在不同的列表中搜索空闲空间,减少争用和等待。
        RAC环境中不同实例间保证空间关系密切。
        
    ASSM性能更好,而且是永久表空间和本地管理的表空间的默认选项。
    
    2.1.2 手动段空间管理 manual segment space management (MSSM),使用free list去管理空间空间,free list跟踪高水位线下的block的使用情况。
    
    如果你向一个block中插入1行发现这个块容不下,而且他的使用空间大于等于pctused,然后就会把这个block从free list上面拿下来。相反,
    如果你将一个block中的1行数据删除,oracle会检查他的使用空间如果小于pctused,那么就会把这个块,放到free list的开头去。
    这种情况下,不仅要关注pctfree,其他如PCTUSED, FREELISTS, FREELIST GROUPS 都要关注。一般要建立1个或者多个free list group。
    每个group有1个master free list,下面管理多个process free lists。
    手工管理的表空间管理起来比较复杂,你需要调整pctfree和pctused减少行迁移和节省存储空间。
    
    

2.2 字典管理的表空间 Dictionary-managed tablespaces

  使用数据字典管理extents。不管是分配还是释放空间,都要执行递归sql,操作数据字典表。影响性能和并发。


以上内容来自官方文档:

Oracle® Database ]
Concepts
11
g Release 2 (11.2)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值