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中,数据块的大小可配置,例如文档中提到的blocksize:8192字节,即Oracle数据块可以设置为8KB大小。数据块内部又分为不同的区域,包括数据头(Block Header)、数据区(Data Area)以及自由空间(Free Space...
"Oracle数据块结构分析说明" Oracle 数据块结构是 Oracle 数据库存储数据的基本单元。一个数据块(Block)是 Oracle 数据库中的最小存储单元,它是数据文件(Datafile)中的一部分。每个数据块的大小可以是 2k、4k...
一、Oracle数据结构基础 1. 表(Table):表是Oracle数据库中最基本的数据存储单元,由一系列行(Records)和列(Columns)组成,用来存储特定类型的数据。每列都有一个数据类型,如NUMBER、VARCHAR2或DATE等。 2....
每个表空间由一个或多个数据文件组成,每个数据文件中包含一系列的数据块,这是Oracle数据存储的最小单位。 2. **重做日志文件**(Redo Log Files):重做日志文件记录了对数据库的所有事务修改,用于在系统崩溃或...
"Oracle导出数据结构文档.rar" 提供了一个名为 "DBExportDoc V1.0 For Oracle" 的工具,它专门用于将Oracle数据库中的表结构导出为Word文档,生成易于阅读和打印的标准格式。 DBExportDoc V1.0 是一个高效实用的...
Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的数据管理和处理能力深受企业和开发人员的喜爱。在日常工作中,数据库管理员和开发人员经常需要将Oracle数据库的表结构文档化,以便于理解和维护。"Oracle...
Oracle数据库的物理存储结构管理是指对数据库中的数据文件、控制文件和日志文件进行管理和维护的过程。这种管理对于数据库的性能、安全和可扩展性都具有重要意义。 一、数据文件管理 数据文件是Oracle数据库中存储...
《Oracle基本数据类型存储格式详解》 Oracle数据库中,数据类型的存储格式对于数据库的性能和空间利用率至关重要。本文将深入探讨Oracle的字符类型、数字类型、日期类型、ROWID类型和RAW类型的基本数据类型的存储...
Oracle 数据字典是数据库管理系统中的一个重要组成部分,它存储着关于Oracle数据库结构、权限、对象以及系统设置等元数据。在数据库管理和开发过程中,了解和掌握数据字典对于优化查询、故障排查以及数据库设计都至...
Oracle 9i 物理结构是数据库管理系统的核心组成部分,它决定了数据如何在磁盘上存储、管理和访问。Oracle 9i 物理结构主要由以下几个关键组件构成: 1. **数据文件 (Data Files)**: 扩展名为 .DBF 的数据文件是...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级数据存储和管理中扮演着重要角色。在日常管理和开发过程中,有时我们需要将Oracle数据库的表结构导出为其他格式,便于分析、备份或共享。"Oracle...
Oracle数据库的存储结构是理解其工作原理的关键部分,它包括物理存储结构和逻辑存储结构。 1.1 物理存储结构 Oracle数据库的物理存储结构是实际存储在磁盘上的操作系统文件,主要由三类核心文件构成: - 数据文件...
### Oracle实验二:体系结构、存储结构与各类参数 #### 实验目的 1. **理解Oracle体系结构**:包括逻辑组件如表空间、段、区等;物理组件如数据文件、控制文件、重做日志文件等。 2. **了解初始化参数文件以及初始...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的功能来管理和操作数据。在开发、文档编写或分享数据库设计时,有时我们需要将Oracle表结构导出到更便于阅读和分享的格式,比如Microsoft Word文档。...
首先,Oracle是全球广泛使用的大型关系型数据库管理系统(RDBMS),用于存储和管理大量结构化数据。在Oracle中,表结构是数据库的基础,包括表名、字段(列)、数据类型、约束等元素。创建和维护这些结构通常需要...
Oracle数据库的逻辑结构描述了数据在数据库中的组织和存储方式,包括表空间、段等高级结构如何共同工作以优化数据存储和访问。总的来说,Oracle数据库体系结构设计得非常灵活和强大,能够满足大规模和复杂数据管理...
3. **Oracle数据库兼容性**:Oracle数据迁移工具专门针对Oracle数据库设计,因此它深入理解Oracle的数据结构、存储过程、触发器和索引等特性,确保在迁移过程中能正确处理这些复杂元素。 4. **功能特性**:强大的...
Oracle数据库的体系结构是其高效管理和优化数据操作的关键。这个复杂的架构设计主要目的是为了有效地管理数据库系统中的稀缺资源,特别是内存,以提高性能并确保数据的完整性和可用性。 1. **Oracle 引入复杂体系...