`

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数据仓库解决方案

    实现数据仓库所有功能的基础是数据库。...Oracle数据仓库解决方案的核心是Oracle8i数据库。和 Oracle以前的版本相比,Oracle8i数据库的性能,资源的管理,分析能力和操作的简单性方面都有质的飞跃。

    Oracle 高性能SQL引擎剖析SQL优化与调优机制详解

    深入揭示OracleSQL优化与调优的原理、核心技术与思想方法 盖国强鼎力推荐! Oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能的一个重要因素就是SQL性能问题。本书是作者十年磨一剑的成果之一...

    oracle database 10g 完整参考手册part1

    第42章 Oracle数据字典指南 第43章 调整应用程序和SQL旅行者指南 第44章 调整中的案例分析 第45章 Oracle Application Server 10g的旅行者指南 第46章 数据库管理旅行者指南 第47章 XML旅行者指南

    Oracle_RAC安装配置指导书

    RAC,全称real application clusters,译为“实时应用集群”, 是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。 RAC提供的优缺点: 优点  Oracle RAC主要...

    Oracle SQL高级编程

    2.12 执行计划并取得数据行 50 2.13 SQL执行——总览 52 2.14 小结 53 第3章 访问和联结方法 55 第4章 SQL是关于集合的 95 第5章 关于问题 116 第6章 SQL执行计划 137 第7章 高级分组 170 第8章 分析函数 197 第9章...

    数据安全专项研究和实践资料集合.zip

    数据安全与恢复机制揭密 58到家集团数据安全建设探索与实践 大数据安全威胁与防范对策(公开版) 大数据安全之系统最佳实践 大数据视野下的数据安全防护体系探索 ...Oracle数据安全之异构同步和审计

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。 四、 如何学习 认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同学 五、 体系结构 ...

    Oracle Database 11g初学者指南--详细书签版

    7.1.10 数据文件、表空间、段、分区和块 182 7.1.11 转储文件 183 7.2 Oracle用户管理的备份和恢复 183 7.2.1 用户管理的备份类型 184 7.2.2 冷备份 184 7.2.3 热备份 184 7.2.4 从冷备份中恢复 185 7.2.5 ...

    信息存储技术专利数据分析

    从专利申请、技术构成、核心专利、技术变革、专利战略等方面进行分析,从中国本土和全球的布局两个角度分别分析了专利产出、主要竞争者、热点技术和研发重点以及竞争态势,力求找到信息存储技术专利申请对技术产业化...

    JAVA ORACLE数据库资料讲解

    1.4 数据建模是信息系统建设的核心和难点 从技术角度讲,信息系统建设的实质是系统集成,而系统集成的关键在于处理好各系统之间的互连性和互操作性(即接口)。硬件及系统软件的互连性和互操作性均可由标准化接口或...

    Oracle数据库日常维护手册

    2.3. 检查 ORACLE 核心转储目录...................................................................................... 7 2.4. 检查 ROOT 用户和 ORACLE 用户的 EMAIL............................................

    数据中台解决方案.pptx

    数据存储是数据中台的核心,需要根据数据的特点和业务需求选择合适的存储方案。对于结构化数据,可以选择关系型数据库如MySQL、Oracle等;对于非结构化数据,可以选择分布式文件系统如Hadoop HDFS、对象存储如Amazon...

    数据中台技术架构设计方案.pptx

    数据存储是数据中台的核心,需要根据数据的特点和业务需求选择合适的存储方案。对于结构化数据,可以选择关系型数据库如MySQL、Oracle等;对于非结构化数据,可以选择分布式文件系统如Hadoop HDFS、对象存储如Amazon...

    数据中台技术架构设计方案 .docx

    数据存储是数据中台的核心,需要根据数据的特点和业务需求选择合适的存储方案。对于结构化数据,可以选择关系型数据库如MySQL、Oracle等;对于非结构化数据,可以选择分布式文件系统如Hadoop HDFS、对象存储如Amazon...

    推荐Oracle智慧财务解决方案(50页).rar

    接着,它深入探讨了如何通过Oracle的技术平台,实现财务数据的实时分析、预测和决策支持,帮助企业实现财务的透明化、标准化和集中化。此外,该资料还提供了丰富的实践案例和操作指南,帮助读者理解和掌握Oracle智慧...

    推荐Oracle智慧财务解决方案(50页).zip

    通过对这些组件的深入剖析,文档展示了如何利用Oracle解决方案实现财务数据的准确性、实时性和透明性,从而提高企业的决策效率和财务管理水平。此外,文档还包含了丰富的案例研究和最佳实践,帮助读者理解如何在不同...

    农业大数据技术.pptx

    核心团队 大数据技术-平台架构 Oracle MySQL SQL Server ETL清洗 分布式数据库 Flume & Sqoop 抽 取 层 日志 点击流 其它数据接口 HDFS分布式文件系统 NoSQL数据库 (图数据库) HBase 列族数据库 Pig 分析工具 ...

    2020 DTC 数据技术嘉年华演讲PPT汇总.zip

    大规模多种数据库热点SQL质量分析 AnalyticDB,金融级云原生数据仓库及最佳实践 OceanBase分布式数据库的新征程 TiDB数据驱动的企业智能化转型新方向 检验国产分布式事务数据库技术架构与核心算法的方法论--热璞...

Global site tag (gtag.js) - Google Analytics