当前位置: 首页>移动开发>正文

SQL优化相关存储结构——段

对SQL的优化过程中,了解对象存储结构也很重要。在Oracle数据库中,存储结构

分为四级管理:表空间(tablespace)、段(segment)、区(extent)、块(block)。

表空间是由段(segment)组成的,段是由范围(extent)组成的,范围是由连续的块(block)组成的。

当在表空间里创建一个table、index等对象时,其实对使用者而言其即为对象,但是从Oracle存储的角度来说把它称为segment。

Oracle最小的读写单位是block,但是在为对象分配空间时单位却是extent,这样做的好处其实就是为了提高效率。

上面提到,段是由范围组成的,当一个extent被分配给一个segment时,和segment对应的对象就可以使用空间了。

数据段(即基表段),是Oracle数据库中用于存储基表数据的段。

数据段存储在表空间中,对应于一个或多个数据文件(段可以来自多个文件,但段中指定的一个区只能来自一个文件)。

每个基表段都有一个数据段(cluster聚簇段中,两个基表对应一个数据段)。每当用户创建一个基表时,系统会在用户默认的表空间中创建一个数据段。

根据段保存对象的不同,可把段划分为多种类型,主要包括以下几种:

·表段:最普通的一种方式。一张表即对应一个段,存储数据没有顺序。表中所有数据都在一个表空间中(段是不可以跨表空间的,但是可以跨文件)。

·索引段:保存索引数据的段。

·聚簇段(CLUSTER):在这种段中保存多张表的数据。这种情况主要是用在多张表中有相同的表数据列或多张表经常一起使用的情况,但更新开销大。有两种类型的聚簇——B树聚簇和散列聚簇。

·索引组织表段(IOT):段中数据按照索引的顺序存储数据。它是一种有序存储表。

·表分区段或子分区段:一张表中的数据被划分为多个分区,每个分区对应一个段。

·索引分区段:一个索引中的数据被划分为多个分区,每个分区对应一个段。

·大对象段(LOB):表中含有大对象数据。如果对象大小大于指定的范围,则会将对象数据单独保存在一个段中。表中只留下指向该段的地址指针

·其他:除以上类型之外,还包括回退段、临时段、嵌套表段(NESTED)、启动段(BOOTSTRAP)等。


https://www.xamrdz.com/mobile/4a91996512.html

相关文章: