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
表空间 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
11g Release 2 (11.2)