`
fengbin_89
  • 浏览: 39654 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Oracle的数据存储结构

阅读更多
Oracle的数据存储结构
表空间(tablespace)  oracle中最大的逻辑存储单位
数据文件(data file)表空间物理存储载体
段(segment) oracle中所占用空间的对象总称。
区(extent) 段的组成单位
数据块(data block)区的组成单位,是oracle存储和数据操作的最小单位。


数据块(block)


数据块组成:
块头(管理信息:数据块的地址、表目录、行目录、ITL SLOP(trsanction 事务管理))、数据。

ROWID组成
Object number– file number – block number– row number

DBMS_ROWID包


通过ROWID访问数据是最快的

数据块的存储属性
PCTFREE: 但数据块的数据达到PCTFREE这个值时,将不允许继续插入数据
PCTUSED: 当数据块中数据占用空间小于PCTUSED时,数据块会被再次使用,继续可以插数据

行迁移和行链接
--行链接(Row Chaining):数据块放不下行的内容,会将部分存入另一个数据块并和第一个数据块产生链接(一般发生在insert)
--行迁移:数据块放不下行内容,将内容存入另一数据块,并在第一个块中存放指向他的指针。(一般发生在update)
注意:ROWID不会发生变化

数据块空闲空间的合并
① 可以手工对数据块进行空闲空间合并,oracle在一般情况下汇总进行空闲空间合并
- 当一个插入或者更新操作的行在一个数据块中有足够的空闲空间
- 并且这个空闲空间是碎片状态,无法满足一行数据的使用
② Oracle不总是自动整理碎片(合并空闲空间)的原因是,这会导致一定的系统资源开销。

索引数据块的整理
Alter index COALESCE – 合并同一个支的数据块
Alter index REBUILD – 重构整个索引段

区(extent)
Extent定义
Extent是有一组连续的数据块组成,多个extent构成一个段(segment),当创建时,oracle会为它分配一个初始extent
一个段的extents可以分布在不同的数据块。
查询一张表段-extent-数据块的信息


段定义
在oracle中,凡是分配了空间的对象,都称之为段。
- 表、表分区
- 索引、索引分区
- 大对象(LOB)
段分类
- 数据段
- 临时段
- 回滚段
临时段(临时表空间)
- 排序、hash、merge…(需要中间的数据处理区域)
  . 创建索引、order by、hash join、merge join
- 只有在内存空间不足时,oracle才会在临时表空间上创建段
- 临时表由于不产生redo,能够提供数据操作的性能(回收、扩展效率更高)
   临时表

   On commit设定
   Delete rows    事务提交删除表
   Preserve rows  会话结束提交
段数据的压缩
oracle允许对段进行压缩
优点
- 减少存储空间
- 减少处理的数据块
. 减少内存占用
. 提高I/O速度
. 提供查询效率
缺点
- 因为要额外对数据做处理,在数据插入时,会消耗更多的资源和时间
段压缩的级别
- 表级(索引)


- 表空间级

- 分区
- 子分区
段的存储管理
- MSSM
. 手工设定对象的存储参数
PCTFREE, PCTUSED, FREELISTS…..

- ASSM
. oracle自动设定对象的存储参数
只可以手工设定PCTFREE参数,其他参数由自动设定
创建段管理 MSSM

优点:
- 给予DBA更大的空间管理余地
- 对于一些数据块操作非常敏感的场景依然有用
缺点:
- 设置参数多
- 参数设定值困难
- 需要更高的水平
自动段管理 ASSM
通过位图方式管理空间


优点:
- 简化管理
- 增大并发度
- RAC环境下能改善并发性能(不需要各个实例间相互访问大量的freelist)
劣势:
- FTS(全表扫描)
- 大数据的加载,会导致性能下降
- 影响索引的集群因子
表空间
物理上表空间有:Data Files、Temp Files
大文件表空间
- 普通的数据文件、受到数据块的限制
. 每个数据文件最多包含2^22-1个数据块
- 大数据文件、可以使用2^32个数据块

优势
- 减少数据库的数据文件个数
- 方便文件的管理,不需要人工干预表空间的大小
- 减少数据库对文件图同步的开销

表空间的管理方式
- 本地管理表空间
. 依赖于段管理

- 字典管理表空间
表空间中的存储的信息记录在Oracle数据字段(system)表空间中,凡是DML操作,都需要访问SYSTEM表空间和相关的视图

表空间的存储属性
- 数据管理方式
. local
. dictionary  11G不在使用
- 段管理
. ASSM
. MSSM
- extent管理
. AUTOALLCATE
. UNIFORM
表空间的默认属性
   

表空间的extent的管理方式
AUTOALLOCATE
- 由Oracle自动决定新分配的extent的大小
UNIFORM
- 统一extent尺寸


表空间属性 --- 段属性
- 段对象的存储属性可以直接从所在的表空间集成过来
- 也可以单独设定自己的属性
Oracle的读操作
逻辑读(logical reads)
- 从内存中读取数据块
.  current reads(DB block gets)
.  consistent reads
物理读(physical reads)
- 从磁盘读取数据块到内存

单块读和多块读
① 每次从磁盘读取一个数据块称为单块读
- 对应的对待事件 db file sequential read
② 每次从磁盘读取多个数据块称为多块读
- 对应的等待事件 db file scattered read
- 每次读取的数据块有参数DB_FILE_MULTIBLOCK_READ_COUNT确定
LRU(Least Recently used)列表
- Lru使用中部插入算法,数据从中部插入列表
- Lur列表分为热段和冷段
- 中部插入点为冷端的头部,也就是热端的尾部。
   备注:数据库的多版本,一致性读构造数据库的多版本。
   多数据块在LRU支持下读:多块读完立刻扔到冷端的最右端。


分享到:
评论

相关推荐

    Oracle数据块结构分析说明BLOCK结构详解

    在Oracle中,数据块的大小可配置,例如文档中提到的blocksize:8192字节,即Oracle数据块可以设置为8KB大小。数据块内部又分为不同的区域,包括数据头(Block Header)、数据区(Data Area)以及自由空间(Free Space...

    oracle数据块结构分析说明

    "Oracle数据块结构分析说明" Oracle 数据块结构是 Oracle 数据库存储数据的基本单元。一个数据块(Block)是 Oracle 数据库中的最小存储单元,它是数据文件(Datafile)中的一部分。每个数据块的大小可以是 2k、4k...

    Oracle和数据结构

    一、Oracle数据结构基础 1. 表(Table):表是Oracle数据库中最基本的数据存储单元,由一系列行(Records)和列(Columns)组成,用来存储特定类型的数据。每列都有一个数据类型,如NUMBER、VARCHAR2或DATE等。 2....

    Oracle数据库体系结构( 中文详细版)

    每个表空间由一个或多个数据文件组成,每个数据文件中包含一系列的数据块,这是Oracle数据存储的最小单位。 2. **重做日志文件**(Redo Log Files):重做日志文件记录了对数据库的所有事务修改,用于在系统崩溃或...

    Oracle导出数据结构文档.rar

    "Oracle导出数据结构文档.rar" 提供了一个名为 "DBExportDoc V1.0 For Oracle" 的工具,它专门用于将Oracle数据库中的表结构导出为Word文档,生成易于阅读和打印的标准格式。 DBExportDoc V1.0 是一个高效实用的...

    oracle表结构导word工具

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的数据管理和处理能力深受企业和开发人员的喜爱。在日常工作中,数据库管理员和开发人员经常需要将Oracle数据库的表结构文档化,以便于理解和维护。"Oracle...

    实验2Oracle数据库物理存储结构管理.docx

    Oracle数据库的物理存储结构管理是指对数据库中的数据文件、控制文件和日志文件进行管理和维护的过程。这种管理对于数据库的性能、安全和可扩展性都具有重要意义。 一、数据文件管理 数据文件是Oracle数据库中存储...

    Oracle EBS 数据结构

    在这个"Oracle EBS 数据结构"的主题中,我们将深入探讨Oracle EBS 11i版本在总账、应收、应付、库存、采购、固定资产和项目会计等模块中的数据表结构及其关联性。 1. **总账模块(General Ledger)**: - 总账模块...

    oracle 导出数据字典的小工具

    Oracle 数据字典是数据库管理系统中的一个重要组成部分,它存储着关于Oracle数据库结构、权限、对象以及系统设置等元数据。在数据库管理和开发过程中,了解和掌握数据字典对于优化查询、故障排查以及数据库设计都至...

    oracle9i物理结构,oracle9i物理结构

    Oracle 9i 物理结构是数据库管理系统的核心组成部分,它决定了数据如何在磁盘上存储、管理和访问。Oracle 9i 物理结构主要由以下几个关键组件构成: 1. **数据文件 (Data Files)**: 扩展名为 .DBF 的数据文件是...

    Oracle数据库表结构导出工具

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级数据存储和管理中扮演着重要角色。在日常管理和开发过程中,有时我们需要将Oracle数据库的表结构导出为其他格式,便于分析、备份或共享。"Oracle...

    oracle数据库的存储结构-.pdf

    Oracle数据库的存储结构是理解其工作原理的关键部分,它包括物理存储结构和逻辑存储结构。 1.1 物理存储结构 Oracle数据库的物理存储结构是实际存储在磁盘上的操作系统文件,主要由三类核心文件构成: - 数据文件...

    oracle实验二 体系结构、存储结构与各类参数

    ### Oracle实验二:体系结构、存储结构与各类参数 #### 实验目的 1. **理解Oracle体系结构**:包括逻辑组件如表空间、段、区等;物理组件如数据文件、控制文件、重做日志文件等。 2. **了解初始化参数文件以及初始...

    oracle 自定义数据结构和表类型实验

    通过这个实验,你不仅会理解Oracle自定义数据结构和表类型的使用方法,还能体会到它们在优化数据存储和提高代码可读性方面的价值。这对于任何从事Oracle数据库开发和管理的人来说都是宝贵的技能。

    oracle数据库导出表结构到WORD文档

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的功能来管理和操作数据。在开发、文档编写或分享数据库设计时,有时我们需要将Oracle表结构导出到更便于阅读和分享的格式,比如Microsoft Word文档。...

    oracle表结构生成工具

    首先,Oracle是全球广泛使用的大型关系型数据库管理系统(RDBMS),用于存储和管理大量结构化数据。在Oracle中,表结构是数据库的基础,包括表名、字段(列)、数据类型、约束等元素。创建和维护这些结构通常需要...

    oracle数据库体系结构

    Oracle数据库的逻辑结构描述了数据在数据库中的组织和存储方式,包括表空间、段等高级结构如何共同工作以优化数据存储和访问。总的来说,Oracle数据库体系结构设计得非常灵活和强大,能够满足大规模和复杂数据管理...

    oracle数据迁移工具

    3. **Oracle数据库兼容性**:Oracle数据迁移工具专门针对Oracle数据库设计,因此它深入理解Oracle的数据结构、存储过程、触发器和索引等特性,确保在迁移过程中能正确处理这些复杂元素。 4. **功能特性**:强大的...

Global site tag (gtag.js) - Google Analytics