表空间(Tablespace)和模式(Schema)的区别

253 阅读3分钟

表空间(Tablespace)和模式(Schema)的区别

作者:滑稽 gitee.com/bighuaji

表空间(Tablespace)和模式(Schema)是 Oracle 数据库中的两个核心概念,它们分别从存储管理逻辑组织两个不同的角度对数据库进行管理。以下是两者的详细对比:


1. 定义与作用

特性表空间 (Tablespace)模式 (Schema)
定义表空间是数据库中逻辑存储单元,用于管理物理存储(如数据文件)。模式是用户拥有的数据库对象集合,包括表、视图、索引、存储过程等。
作用表空间的主要作用是管理数据库对象的存储位置(如将数据分布到不同磁盘)。模式用于逻辑组织数据库对象,提供对象访问的上下文。
关注点关注的是数据的物理存储位置关注的是数据的逻辑分组与权限管理

2. 结构与组成

特性表空间 (Tablespace)模式 (Schema)
包含内容表空间包含存储的数据库对象的实际数据,如表、索引的数据块。模式包含用户创建的逻辑数据库对象,如表、索引、存储过程等。
与文件的关系表空间由一个或多个物理数据文件(Datafile)组成。模式本质上是一个逻辑组织,不与物理文件直接对应。
与用户的关系表空间独立于用户,可以由多个用户共享。模式直接关联到某个数据库用户,模式名通常与用户名相同。

3. 管理与使用

特性表空间 (Tablespace)模式 (Schema)
创建方式通过 CREATE TABLESPACE 创建表空间。模式是自动与数据库用户绑定,创建用户时自动生成对应的模式。
使用方式表和索引等数据对象需要显式指定存储在哪个表空间中。通过 SQL 操作模式中的对象(schema_name.object_name)。
用户之间共享多个用户可以共享同一个表空间的存储资源。每个模式独立,用户无法直接访问其他用户的模式内容。
权限控制通过表空间配额控制用户可用的存储空间。通过授权控制用户对模式中对象的访问权限。

4. 对象关系

特性表空间 (Tablespace)模式 (Schema)
对象存储表和索引的数据存储在指定的表空间中。表、视图、存储过程等属于某个模式,但存储在某个表空间中。
关系说明- 一个表空间可以包含多个模式中的对象的数据。- 一个模式中的对象可以存储在不同的表空间中。

5. 举例说明

表空间的使用

  • 假设创建了两个表空间:
    • TS_DATA:存储业务数据。
    • TS_INDEX:存储索引。
  • 创建表时,可以指定存储在哪个表空间:
    CREATE TABLE employees (
        emp_id NUMBER PRIMARY KEY,
        name VARCHAR2(100)
    ) TABLESPACE TS_DATA;
    
    CREATE INDEX emp_name_idx
    ON employees(name)
    TABLESPACE TS_INDEX;
    

模式的使用

  • 假设有两个用户:
    • 用户 HRSCOTT,分别对应模式 HRSCOTT
  • 每个模式有独立的对象:
    -- HR 模式中创建表
    CREATE TABLE HR.employees (
        emp_id NUMBER PRIMARY KEY,
        name VARCHAR2(100)
    );
    
    -- SCOTT 模式中创建表
    CREATE TABLE SCOTT.products (
        product_id NUMBER PRIMARY KEY,
        product_name VARCHAR2(100)
    );
    
  • 访问模式中的对象:
    SELECT * FROM HR.employees;
    SELECT * FROM SCOTT.products;
    

6. 总结对比

方面表空间 (Tablespace)模式 (Schema)
物理 vs 逻辑用于存储数据的物理结构。用于组织数据库对象的逻辑结构。
与用户的关系多用户共享表空间。每个用户对应一个独立的模式。
用途数据的存储管理(关注存储位置、性能优化)。数据的逻辑管理(关注权限分配、对象分组)。

两者相辅相成,表空间负责存储管理,模式负责逻辑组织,结合使用能够高效地管理 Oracle 数据库的物理和逻辑资源。