`

oracle数据块核心剖析

阅读更多

详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp57

数据块(Oracle Data Blocks),本文简称为“块”,是Oracle最小的存储单位,Oracle数据存放在“块”中。一个块占用一定的磁盘空间。特别注意的是,这里的“块”是Oracle的“数据块”,不是操作系统的“块”。

Oracle每次请求数据的时候,都是以块为单位。也就是说,Oracle每次请求的数据是块的整数倍。如果Oracle请求的数据量不到一块,Oracle也会读取整个块。所以说,“块”是Oracle读写数据的最小单位或者最基本的单位。

块的标准大小由初始化参数DB_BLOCK_SIZE指定。具有标准大小的块称为标准块(Standard Block)。块的大小和标准块的大小不同的块叫非标准块(Nonstandard Block)。同一数据库中,Oracle9i及以上版本支持同一数据库中同时使用标准块和非标准块。Oracle允许指定5种非标准块(Nonstandard Block)。

操作系统每次执行I/O的时候,是以操作系统的块为单位;Oracle每次执行I/O的时候,都是以Oracle的块为单位。
Oracle数据块大小一般是操作系统块的整数倍。

数据块的格式(Data Block Format)

块中存放表的数据和索引的数据,无论存放哪种类型的数据,块的格式都是相同的,块由块头(header/Common and Variable),表目录(Table Directory),行目录(Row Directory),空余空间(Free Space)和行数据(Row Data)五部分组成,
如下图所示。 

 

块头(header/Common and Variable):存放块的基本信息,如:块的物理地址,块所属的段的类型(是数据段还是索引段)。 表目录(Table Directory):存放表的信息,即:如果一些表的数据被存放在这个块中,那么,这些表的相关信息将被存放在“表目录”中。

行目录(Row Directory):如果块中有行数据存在,则,这些行的信息将被记录在行目录中。这些信息包括行的地址等。

行数据(Row Data):是真正存放表数据和索引数据的地方。这部分空间是已被数据行占用的空间。

空余空间(Free Space):空余空间是一个块中未使用的区域,这片区域用于新行的插入和已经存在的行的更新。

头部信息区(Overhead):我们把块头(header/Common and Variable),表目录(Table Directory),行目录(Row Directory)这三部分合称为头部信息区(Overhead)。头部信息区不存放数据,它存放的整个块的信息。头部信息区的大小是可变的。一般来说,头部信息区的大小介于84字节(bytes)到107字节(bytes)之间。

数据块中自由空间的使用

当往数据库中插入(INSERT)数据的时候,块中的自由空间会减少;当对块中已经存在的行进行修改(UPDATE)的时候(使记录长度增加),块中的自由空间也会减少。

DELETE语句和UPDATE语句会使块中的自由空间增加。当使用DELETE语句删除块中的记录或者使用UPDATE语句把列的值更改成一个更小值的时候,Oracle会释放出一部分自由空间。释放出的自由空间并不一定是连续的。通常情况下,Oracle不会对块中不连续的自由空间进行合并。因为合并数据块中不连续的自由空间会影响数据库的性能。只有当用户进行数据插入(INSERT)或者更新(UPDATE)操作,却找不到连续的自由空间的时候,Oracle才会合并数据块中不连续的自由空间。

对于块中的自由空间,Oracle提供两种管理方式:自动管理,手动管理

行链接和行迁移(Row Chaining and Migrating)

行链接(Row Chaining):如果我们往数据库中插入(INSERT)一行数据,这行数据很大,以至于一个数据块存不下一整行,Oracle就会把一行数据分作几段存在几个数据块中,这个过程叫行链接(Row Chaining)。如下图所示: 

 


如果一行数据是普通行,这行数据能够存放在一个数据块中;如果一行数据是链接行,这行数据存放在多个数据块中。

行迁移(Row Migrating):数据块中存在一条记录,用户执行UPDATE更新这条记录,这个UPDATE操作使这条记录变长,这时候,Oracle在这个数据块中进行查找,但是找不到能够容纳下这条记录的空间,无奈之下,Oracle只能把整行数据移到一个新的数据块。原来的数据块中保留一个“指针”,这个“指针”指向新的数据块。被移动的这条记录的ROWID保持不变。行迁移的原理如下图所示: 

 

无论是行链接还是行迁移,都会影响数据库的性能。Oracle在读取这样的记录的时候,Oracle会扫描多个数据块,执行更多的I/O。

块中自由空间的自动管理

Oracle使用位图(bitmap)来管理和跟踪数据块,这种块的空间管理方式叫“自动管理”。自动管理有下面的好处:

◆易于使用

◆更好地利用空间

◆可以对空间进行实时调整

块中自由空间的手动管理

用户可以通过PCTFREE, PCTUSED来调整块中空间的使用,这种管理方式叫手动管理。相对于自动管理,手动管理方式比较麻烦,不容易掌握,容易造成块中空间的浪费。

PCTFREE参数用于指定块中必须保留的最小空闲空间百分例。之所以要预留这样的空间,是因为UPDATE时,需要这些空间。如果UPDATE时,没有空余空间,Oracle就会分配一个新的块,这会产生行迁移(Row Migrating)。
PCTUSED也是用于设置一个百分比,当块中已使用的空间的比例小于这个百分比的时候,这个块才被标识为有效状态。只有有效的块才被允许插入数据。

 

分享到:
评论

相关推荐

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

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

    Oracle数据块原理的深入剖析.docx

    Oracle 数据块原理深入剖析 Oracle 数据块是数据库管理系统的核心组件之一,它是 Oracle 存储数据的最小单位。每个数据块占用特定的磁盘空间,并且是 Oracle 读写操作的基本单位。Oracle 数据块的设计和管理对...

    oracle数据仓库教程

    在Oracle数据仓库教程中,你将学习到数据仓库的核心概念,包括数据仓库的架构、设计原则和实施策略。 首先,你会了解数据仓库的组成部分,如数据源、ETL(Extract, Transform, Load)过程、数据模型和OLAP(在线...

    Oracle 数据仓库技术白皮书

    ##### 4.2 案例二:金融业客户利用Oracle数据仓库解决方案解决利润成本、风险和客户关系管理 金融行业客户利用Oracle 的数据仓库技术提高了财务透明度、降低了风险,并提升了客户满意度。 #### 结论 Oracle 数据...

    oracle数据中心解决方案1

    Oracle数据中心解决方案的核心目标是打破应用与数据之间的紧密耦合,实现数据的集中存储和统一管理,从而提升数据的准确性和一致性。传统业务系统中,由于缺乏标准化的信息资源管理,导致数据分散、接口复杂、信息...

    Oracle数据仓库解决方案介绍.pptx

    该解决方案包括数据仓库设计思想和整体架构、Oracle 数据仓库功能组件、核心平台 - Oracle 9i、设计和 ETL 工具 - Warehouse Builder、决策分析工具集、决策分析应用等几个方面。 Oracle 数据仓库设计思想和整体...

    oracle大数据分析方案

    Oracle大数据分析方案是针对海量数据处理和分析的一种高级策略,主要应用于企业级环境,帮助运维人员和深入研究Oracle数据库的专业人士提升数据管理效率和洞察力。Oracle作为一个强大的关系型数据库管理系统,其在...

    Oracle数据仓库架构

    Oracle数据仓库架构是一种高效、可扩展的解决方案,用于构建和管理大规模的数据分析环境。这个架构主要分为三个层次:数据获取层、数据管理层和数据使用层,每个层都有其特定的功能和重要性。 **数据获取层**是数据...

    Oracle数据仓库解决方案.pptx

    Oracle数据仓库的设计思想强调了完整性和集成性,它不仅仅是一个产品,而是一个涵盖了数据整合、管理、分析和决策支持的流程。其核心目标是为企业的各级管理人员提供战略和运营层面的洞察,通过数据驱动的决策来提升...

    非常全面非常棒的oracle数据仓库教程ppt

    本教程将通过两部分——"数据仓库_day1.ppt"和"数据仓库_day2.ppt",深入讲解Oracle数据仓库的核心概念和技术。 首先,我们从基础开始,了解数据仓库的基本概念。数据仓库是一个集中式的、非易失性的、用于决策支持...

    Oracle 数据挖掘手册

    以下是对该文档内容的一个综合分析,旨在帮助读者更好地理解Oracle数据挖掘的相关知识点。 ### Oracle 9i Data Mining 概念 #### 版权声明与法律条款 文档开头首先明确指出这是Oracle Corporation的专有信息,并且...

    Oracle RAC核心技术详解

    在Oracle RAC核心技术详解中,我们将深入探讨RAC的工作原理、架构、配置以及管理策略。 首先,RAC的核心在于Clusterware和Grid Infrastructure,它们为整个集群提供基础服务,包括节点间的通信、资源管理和故障恢复...

    Oracle数据仓库解决方案

    Oracle数据仓库解决方案是一种由Oracle公司提供的全面的企业级数据管理和分析工具,旨在帮助企业构建高效、集成的数据仓库,以支持商业智能(BI)需求。Oracle Warehouse Builder(OWB)是该解决方案的核心组件,它...

    Oracle 的数据仓库解决方案

    Oracle数据仓库解决方案涵盖了数据管理、获取和展现三个关键部分: 1. **数据管理**:Oracle提供了强大的数据管理工具,如Oracle Database,支持大规模的数据存储和处理。其特有的Grid Computing技术使得资源可以被...

    Oracle数据仓库解决方案核心篇

    Oracle数据仓库解决方案是企业信息化建设中的重要组成部分,它主要用于存储、管理和分析大量结构化数据,为企业决策提供实时、准确的数据支持。本核心篇将深入探讨Oracle在数据仓库领域的关键技术与应用。 一、...

    数据仓库,Oracle数据仓库解决方案。

    - **数据仓库的平台**:Oracle数据仓库解决方案的核心是Oracle 8i数据库,该平台支持多种数据仓库相关的特性和工具。 - **Oracle 8i的数据仓库新特性**:包括丰富的查询处理技术、高级SQL优化器等。 - **Oracle ...

    oracle核心技术路易斯

    #### 二、Oracle数据块结构与管理 在Oracle数据库中,数据是以块的形式存储的,每个块包含了一定数量的数据记录。数据块的管理和维护对于保证数据的一致性和完整性至关重要。 - **数据块的基本组成**:一个典型的...

    数据仓库建设技术 oracle数据仓库设计指南 共7页.pdf

    Oracle数据仓库设计指南是这个领域的权威参考资料,它为数据仓库的建设和优化提供了深入的指导。Oracle作为全球领先的数据库管理系统供应商,其在数据仓库解决方案上拥有丰富的经验和强大的技术支撑。 在数据仓库...

    探讨Oracle数据缓冲区内部机制

    Oracle 数据缓冲区是数据库管理系统中的核心组件,负责存储从磁盘读取的数据块,以减少对物理磁盘的I/O操作,从而提升数据库性能。在Oracle 8i之前,新加载到缓冲区的数据块会自动放置到最近使用列表的前端,但自8i...

Global site tag (gtag.js) - Google Analytics