1.逻辑存储结构信息的查看
oracle逻辑存储结构是oracle自己创建和识别的结构,操作系统层面是无法获知的,需要在数据库层面才可查看相关信息。
2.oracle逻辑存储结构的组成
主要包括数据块、数据区、数据段和表空间。
数据块是oracle中最小的存储单元,也是最小的I/O单元,一个数据块由多个操作系统块组成。
数据区是oracle中最小的分配单元,由一组连续的数据块组成。
数据段是为oracle数据库为每个对象分配的逻辑单元,例如表,索引等。
表空间由多个数据段组成并且每个数据段只属于一个表空间。
注意:
一个表空间可以拥有多个数据文件,一个数据段也可以跨越多个数据文件存在,但是每个数据区只能存在于一个数据文件中。
3.逻辑存储的管理
oracle数据库并不直接管理数据块,而是管理最小的逻辑分配单元:数据区。
对于数据区的管理,可以分为本地管理(通过数据文件头部的位图实现)和数据字典管理。(oracle建议使用本地管理来管理数据区)
对于数据段的管理,可以分为自动段空间管理和手动段空间管理。(oracle建议使用ASSM,并且在本地管理表空间默认使用ASSM)
对于表空间的管理,取决于数据库对于数据区的管理,分为本地管理和数据字典管理。
总结:
表空间的管理方式取决于数据库对于数据区(extent)的管理方式。分为本地管理表空间和数据字典管理表空间。
数据段(segment)的管理方式取决于数据库对于数据块(block)的管理方式。分为ASSM(通过bitmap来管理空闲数据块)和MSSM(通过链表来管理空闲数据块)。
4.本地管理表空间的优势
避免了使用数据字典来维护数据区过程中有可能发生的级联操作。
可以自动追踪空闲空间,避免了在数据字典维护数据区时使用链表来维护空闲块的资源消耗。
可以自动决定本地管理的数据区的大小
5.段空间管理
自动段空间管理优势:
简化了管理,可以不用考虑很多存储参数,主要考虑PCTFREE和PCTUSED参数即可。
提供了更高的并发性,每个事务都只搜索自己的空闲块位图列表(bitmap),减少了竞争和等待。
RAC环境下的动态空间调整。
手动段空间管理:
手动段空间管理使用空闲链表(free list)来追踪低于高水位线的所有空闲数据块。
注意:
ASSM和MSSM一个重要区别:
ASSM在判断是否可以将一条记录插入一个数据块时,不会考虑PCTUSED参数,而MSSM会考虑。这样ASSM可以避免MSSM可能引起的数据块空间的浪费。
6.数据字典管理表空间
数据字典管理表空间在数据库管理数据区的时候,都需要对数据字典进行递归查询(recursive query),会对数据库性能造成负面影响。oracle不推荐使用。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30167136/viewspace-1507504/
,如需转载,请注明出处,否则将追究法律责任。