Back

Oracle物理逻辑存储概念区分

前言

在刚学习Oracle的时候,会接触的一个叫“表空间”的词,很容易被误认为“表”。实际上这是两个完全不同的概念,表空间是Oracle里逻辑存储上最大的单位,”表“是关系型数据库存储和管理数据的一种结构,由行和列组成,每行代表一条记录,每列代表记录中的一个字段。“表”对应Oracle逻辑存储的,而且只是众多的一种。

现在我们看一下,该如何去理解这些概念:实例(Instance)、表空间(Table space)、模式(Schema)、数据库对象、用户(Users)、段(segment)、区(extend)、块(block)、表(table)、列(column)、行(row)

行、列、表

在关系数据库中,(Table)是数据的主要组织单元。它是由一组命名的列和行组成,用于存储和组织数据。

(Column)是表中的一个字段,用于存储特定类型的数据。每个列都有一个名称和相应的数据类型。例如,一个包含学生信息的表可以有列如"学生编号"、“姓名"和"年龄"等,其中每个列分别存储学生的唯一编号、姓名和年龄数据。

(Row),也称为记录(Record),是表中的一个实例或一个数据行。每行由一组与该表的列相对应的值组成。例如,在上述的学生信息表中,每一行可以表示一个学生的具体信息,包括学生编号、姓名和年龄。

简单来说:

表是一个二维的数据结构,由行和列组成。 列是表中的一个字段,用于定义数据的类型和存储特定数据。 行是表中的一个记录或实例,包含一组值,每个值与相应列对应。

就像这样:

EmpId Lastname Firstname Salary
1 Smith Joe 40000
2 Jones Mary 50000
3 Johnson Cathy 44000

块、区、段、表空间

接下来是Oralce逻辑存储上的划分:

首先我们清空大脑,想象数据库宏观上都要存储哪些东西。

主要是数据文件和日志文件,是吧。

接着想象,它们存储在磁盘上,是直接在磁盘上吗?不,数据库要做到管理数据,就必须要划分出一个最小的单元,这个单元就叫做。块是Oracle数据库中最小的逻辑单元,也是最小的I/O单元。

块的大小可以是2KB、4KB、8KB(默认)、16KB、32KB等,这些大小必须是倍数增加。

一个块的结构包括以下几个部分:

  1. 块头(Block Header):存放块的基本信息,如块的物理地址、块所属的类型(数据段、索引段等)、事务槽(用于记录对块进行事务处理的信息)等。块头的大小不是固定的,但通常占用一定的空间。
  2. 表目录(Table Directory):如果块中存储的数据为表数据,则表目录中保存这个表的相关信息。
  3. 行目录(Row Directory):如果块中存储的数据为表数据,则行目录中保存数据行的相关信息,它是一个指针数组,指示了每一行在数据块中的物理位置。
  4. 行数据(Row Data):真正存放数据的区域,这部分空间已被使用。
  5. 空闲空间(Free Space):未使用的区域,用于新行的插入或者已经存在行的更新。

现在,一些块在物理上连续地在一起,就组成了一个的大小从一个块到2GB不等。

的概念很容易理解,当很多相连或者不相连的区组合在一起,就变成了一个

是Oracle数据库中的分配单位,对象如表、索引等都是以为单位进行分配。当创建一个表时将创建一个表段,创建一个索引时就创建一个索引段。每一个消耗存储空间的对象最终被存储到一个段中。有回滚段、临时段、聚簇段、索引段等。

我们上边所说的表,其实就是一个表段,也可以说数据段。毫无疑问,表段是最主要的段,但其他段的作用也不可忽视。

继续向上延伸,引出表空间的概念:表空间是数据库中存储数据的逻辑容器,可以包含一个或多个数据文件(*.DBF),DBF文件就可以肉眼(ls命令)看到啦!

一个段只能属于一个表空间,并且只能存储在该表空间的数据文件中。虽然段属于一个表空间,但它可以跨越该表空间内的多个数据文件(*.DBF)。Oracle数据库会自动管理数据块和区的分配,以便将段分布在多个数据文件中,以提高性能和空间利用率。而一个区只能属于一个数据文件。

模式、用户

模式是数据库对象的逻辑集合。数据库对象包括表,视图,同义词,约束、索引,序列,游标,触发器,函数,变量,(控制块,异常),存储过程,包。模式中的对象存储在表空间中,一个表空间可以包含多个模式中的对象,而一个模式中的对象也可以分布在多个表空间中。 用户是指拥有数据库访问权限的实体,每个用户都对应一个模式(Schema)。当用户在Oracle数据库中创建时,通常会为其指定一个默认表空间。该表空间将作为用户创建新对象(如表、索引等)时的默认存储位置。 要注意,schema是逻辑对象的集合组织,是一个组织概念,和表空间等逻辑概念不属于一个层面。在oracle中,一个user对应的就是一个schema,二者是强相关的。

总结

oracle数据库存储的逻辑和物理结构

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy
© Licensed Under CC BY-NC-SA 4.0