oracle 物理结构(表空间,段区块)

1. 数据库存储结构

逻辑结构—————物理结构
在这里插入图片描述

  • 物理结构
    不同类型的数据文件,数据文件是真实存在的
  • 逻辑结构
    数据库为数据库中的所有数据,分配逻辑数据库空间。数据库空间分配的单位是数据块、区段和段。

顺序:表空间-段-区-块
很多块组成区,很多区组成段,很多段组成表空间
在这里插入图片描述

  1. database 数据库:Oracle数据库至少由两个称为表空间的逻辑存储单元组成,它们共同存储数据库的所有数据。必须拥有SYSTEM和SYSAUX表空间
  2. tablespace 表空间:一个表空间由一个或多个名为datafiles的数据文件组成,这些文件是Oracle数据库运行的操作系统上的物理结构文件。

数据文件表 dba_data_files
在这里插入图片描述
数据是存储在组成数据库的每个表空间的数据文件中
在这里插入图片描述

  1. segment 段:一个表空间对应多个段。段是数据库中的对象如表、索引等,一个段就是一张表或一个索引,段和表/索引是一对一的关系,表是数据段,索引是索引段。
  2. extent 区
  3. block 块:一个块8k

2. 表空间

表空间是一个逻辑概念,物理上对应一个或多个数据文件 datafile 或临时文件tempfiles,逻辑上表空间是存储段的容器。

表空间逻辑的把两个物理文件看作是一个整体,将一个或多个数据文件整合在一起。
在这里插入图片描述

2.1 表空间类型

  1. permanent 永久表空间(如上SYSTEM、SYSAUX和USERS表空间)

  2. temporary 临时表空间
    在这里插入图片描述

  3. UNDO 回滚表空间

2.2 管理方式

在建立表空间时确定的,分为两种:

  • 段管理方式有 AUTO(自动) 和 MANUAL(手动) 两种

区管理方式有本地管理(可理解为自动管理)和字典管理(已淘汰)两种。

3. 段、区、块的关系

  1. 数据存储在Block数据块中,一个数据块8K,对应在物理磁盘上,段是一组Extents,由一个数据块或者多个数据块组成

  2. 区是由一个或多个连续的数据块组成,区段是分配给存储特定类型信息的特定数量的连续数据块。区不能跨段,一个区只属 于一个段。

  3. 段由一组区Extents构成,其中包含表空间中特定逻辑存储结构的所有数据,所有Extents都存储在相同的tablespace表空间中。一个表或者一个索引就是一个段。

3.1 段 segment

  1. 段是逻辑概念,对应数据库中的对象。
  2. 段的类型
    表段、索引段、undo 段、临时段
  3. 创建一个表,ORACLE 为表创建一个(或多个)段,在一个段中保存该表的所有表数据(一个数据表就是一个段或多个段,但不能跨段)。

表分为堆表和分区表(比如将emp表中的hiredate按年份分区,此时一个分区就是一个段)
分区表在数据量庞大的时候使用,分区键值有其自己的索引,在查询时先扫落在哪个分区,然后只在分区中搜索。 分区表可以对某一个分区进行truncate

例子:
a.建表

在这里插入图片描述
b. 查询
在这里插入图片描述
c.查看用户的段
在这里插入图片描述
d.查看全部的段
在这里插入图片描述
延迟段创建:当表里没有数据时,oracle数据库不为这个表创建段,所以如果表中没有数据,表的物理空间分配将延迟到这张表有实际数据插入的时候。

  1. 通常段中至少有一个初始区。当这个段数据增加使得区(extent)不够时,将为这个段分配新的后续区。(11g 段空间延时分配)
  2. 表空间在逻辑上可以存在多个段,物理上可以对应多个数据文件,一个段比较大时可以跨多个数据文件。(表可以跨数据文件)

比如:创建一个表,ORACLE 为表创建一个(或多个)段,在一个段中保存该表的所有表 数据(表数据不不能跨段)。

在这里插入图片描述
在这里插入图片描述
6. 管理方式
free space空闲空间可以自动管理,也可以手动管理
空闲空间在数据库段内是自动管理的。段内空闲/使用的空间使用位图跟踪,而不是使用空闲列表。自动分段空间管理提供了以下好处:

  • 易用性
  • 更好的空间利用率,特别是对于行大小差异很大的对象
    在这里插入图片描述
  • 更好地对并发访问中的变化进行运行时调整(并发:一个表能被多个用户使用)
  • 在性能/空间利用率方面,能更好的多实例行为(在创建本地管理的表空间时,指定自动分段空间管理。然后,该规范应用于随后在这个表空间中创建的所有段)

3.2 区 extent

  1. 概 念
    Extent是进行存储空间分配的基本单位。
    一个区是由一系列逻辑上连续的数据块组成的逻辑存储结构。
    段中第一个区叫初始区,随后分配的区叫后续区。
    在这里插入图片描述
  2. Extent 管理理⽅方式
  • 字典管理
    在数据字典中管理理表空间的区空间分配。Oracle 8i 以前只有通过uet$和fet$的字典管理。
    缺点:某些在字典管理方式下的存储分配有时会产生递归操作,并且容易产生碎片,从而影响了系统的性能,现在已经淘汰了。
  • 本地管理
    在每个数据文件中使用位图管理空间的分配。表空间中所有区(extent) 的分配信息都保存在该表空间对应的数据文件的头部。
    每个区的大小:autoallocate 自动调整 /uniformsize 固定大小
    优点:速度快,存储空间的分配和回收只是简单地改变数据文件中的位图,而不像字典管理方式还需要修改数据库。无碎片,更易于维护
  1. 数据表和Extent的关系
    当建立表的时候建立段,然后自动分配相应的extent(1个或者多个),亦可以手工提前分配extent(用于需大量插入数据的表)

例子:查看段的初始区分配情况 SQL

SQL> col SEGMENT_NAME for a15 
SQL> col SEGMENT_TYPE for a10 
SQL> select SEGMENT_NAME,SEGMENT_TYPE,EXTENT_ID,BLOCKS,BYTES/1024 K from user_extents; 

SEGMENT_NAME    SEGMENT_TY  EXTENT_ID     BLOCKS          K 
--------------- ---------- ---------- ---------- ---------- 
DEPT            TABLE               0          8         64 
EMP             TABLE               0          8         64 
SALGRADE        TABLE               0          8         64 
EMP_NAME        TABLE               0          8         64 
PK_DEPT         INDEX               0          8         64 
PK_EMP          INDEX               0          8         64 
PK_STD_ID       INDEX               0          8         64
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值