Oracle数据库中的存储层次体系
数据库由一个或多个表空间构成。表空间(tablespace)是Oracle中的一个逻辑存储容器,位于存储层次体系的顶层,包括一个或多个数据文件。先了解什么是表空间(tablespace),什么是段(segment),什么事区段(extent),以及是块(block),这些都是Oracle数据库中存储对象所用的分配单位。
1 段
段,这是表空间中主要的组织结构。段就是占用存储空间的数据库对象,如表,索引,回滚段等。
2 区段
段本身又由一个或多个区段组成。区段是文件中一个逻辑上的连续分配的空间。(一般来说,文件本身在磁盘上并不是连续的)。传统的每个区段都至少有一个区段,有些对象可能还需要多个区段(回滚段就需要两个区段),这多个区段可能不在同一个文件中分配,但是区段内的空间总是一个文件的一个逻辑连续的空间。
3 块
区段又进一步由块组成。块是Oracle中最小的空间分配单位。数据行,索引条目或临时排序结果就存储在块中。Oracle中块的常见大小有4种:2KB,4KB,8KB,或16KB.
一个段由一个或多个区段组成,区段则由连续的分配的一些组成块组成。在所有给定的表空间内部,块大小都是一致的,这说明,一个表空间中的所有块大小都相同。
4 表空间
表空间是一个容器,其中包含段。每个段都只属于一个表空间。一个表空间中可能有多个段。一个给定段的所有区域都在与段相关联的表空间中。绝对不会跨越表空间边界。表空间本身可以有一个或多个相关的文件。表空间中给定段的一个区域完全包含在一个数据文件中。不过段可以来自不同的数据文件。
存储层次体系小结
-
数据库由一个或多个表空间组成。
-
表空间由一个或多个数据文件组成。
-
段由一个或多个区段组成。段在表空间,但是可以包含在这个表空间中的多个数据文件中的数据。
-
区段是磁盘上一组逻辑连续的块。区段只在一个表空间中,而且总是在该表空间内的一个文件中。
-
块是数据库中最小的分配单位,也是数据库使用的最小I/O单位。