http://space.itpub.net/13804621/viewspace-331154
Oracle数据块(Data Block)深入剖析
http://topic.csdn.net/u/20090827/22/438d2fb1-5369-4f68-b272-f1fec7aac946.html
数据块(data block) 是oracle最小的逻辑部件,数据块大小合适的选择可以提高性能;
区段(extent)由几个相邻的数据块组合在一起;
段(segment)有一组区段构成;
表空间(tablespace)是包含物理数据文件的逻辑实体,存放数据库的所有可用数据,因此表空间的尺寸也是包含数据的数据文件尺寸的总和,是oracle 主要的逻辑存储结构。
http://topic.csdn.net/u/20090827/22/438d2fb1-5369-4f68-b272-f1fec7aac946.html
基本上是楼上写的,不过我再补充点。
data block的大小是操作系统的data block的整数倍,ORACLE默认是8K,还有4K,16K,32k几种。
在参数文件里的参数为DB_nK_BLOCK_SIZE,可以通过PCTFREE,PCTUSER,FREELIST进行管理,从9i开始ORACLE可以自动管理。
extent是几个逻辑上相邻的data block组合在一块。
segment通常一张表是一个segment,一个INDEX,BLOB,CLOB各自占用一个segment。
tablespace是数据库中数据逻辑存储的地方,一个tablespace可以包含多个数据文件。上面三个的配置如果和tablespace的配置有冲突,以tablespace为准。
http://topic.csdn.net/t/20050606/17/4063417.html
操作系统的最小读写操作单元是操作系统的block,所以当创建一个Oracle数据库的时候我们应该讲数据库的block size设置成为操作系统的block size的整数倍,Oracle block是Oracle数据库中读写操作的最小单元,Oracle9i之前的Oracle数据库版本中Oracle block一旦在创建数据库的时候被设定后就没法再更改。为了在创建数据库之前确定一个合理的Oracle block的大小,我们需要考虑一些因素,例如数据库本身的大小以及并发事务的数量等。使用一个合适的Oracle block大小对于数据库的调优是非常重要的。
一个Oracle block由三个部分组成,分别是数据块头、自由空间、实际数据三部份组成。 数据块头:主要包含有数据块地址的一些基本信息和段的类型,以及表和包含有数据的实际行的地址。 自由空间:是指可以为以后的更新和插入操作分配的空间,大小由PCTFREE和PCTUSED两个参数影响。 实际数据:是指在行内存储的实际数据。 当创建或者更改任何表和索引的时候,Oracle在空间控制方面使用两个存储参数: PCTFREE:为将来更新已经存在的数据预留空间的百分比。 PCTUSED:用于为插入一新行数据的最小空间的百分比。这个值决定了块的可用状态。可用的块时可以执行插入的块,不可用状态的块只能执行删除和修改,可用状态的块被放在freelist中。 当表中一行的数据不能在一个数据block中放入的时候,这个时候就会发生两种情况,一种是行链接,另外一种就是行迁移了.
行链接产生在第一次插入数据的时候如果一个block不能存放一行记录的情况下。这种情况下,Oracle将使用链接一个或者多个在这个段中保留的 block存储这一行记录,行链接比较容易发生在比较大的行上,例如行上有LONG、LONG RAW、LOB等数据类型的字段,这种时候行链接是不可避免的会产生的。 当一行记录初始插入的时候事可以存储在一个block中的,由于更新操作导致行长增加了,而block的自由空间已经完全满了,这个时候就产生了行迁移。在这种情况下,Oracle将会迁移整行数据到一个新的block中(假设一个block中可以存储下整行数据),Oracle会保留被迁移行的原始指针指向新的存放行数据的block,这就意味着被迁移行的ROW ID是不会改变的。 当发生了行迁移或者行链接,对这行数据操作的性能就会降低,因为Oracle必须要扫描更多的block来获得这行的信息。
行链接主要是由于数据库的db_block_size不够大,对于一些大的字段没法在一个block中存储下,从而产生了行链接。对于行链接我们除了增大db_block_size之外没有别的任何办法去避免,但是因为数据库建立后db_block_size是不可改变的(在9i之前),对于Oracle9i的数据库我们可以对不同的表空间指定不同的db_block_size,因此行链接的产生几乎是不可避免的,也没有太多可以调整的地方。
行迁移则主要是由于更新表的时候,由于表的pctfree参数设置太小,导致block中没有足够的空间去容纳更新后的记录,从而产生了行迁移。对于行迁移来说就非常有调整的必要了,因为这个是可以调整和控制清除的。
以上内容供楼主参考。
分享到:
相关推荐
1. **block**:这是块级元素的默认值,如`<div>`、`<p>`等。设置为`block`会使元素独占一行,前后自动换行。 2. **none**:隐藏元素,但仍然保留其在文档流中的位置,相当于`visibility: hidden`,区别在于`display...
- 使用嵌套的`<ul>`和`<li>`元素构建树状菜单的结构。 2. **CSS样式**: - 定义样式来控制菜单的显示效果,如隐藏子菜单、添加展开/折叠图标等。 3. **JavaScript事件处理**: - 使用JavaScript监听点击事件,...
Oracle 数据块(Block)是数据库存储的基本单位,它在Oracle数据库管理系统中扮演着至关重要的角色。数据块的设计和管理直接影响到数据库的性能和空间利用率。本文将深入解析Oracle数据块的结构及其相关知识点。 ...
在Oracle的逻辑结构中,数据组织成多层:数据块(Data Block)、数据区(Data Extent)、数据段(Data Segment)、逻辑对象(Logic Object)、表空间(Tablespace)和数据库(Database)。表空间是存储数据的主要...
"Oracle数据库知识.pptx" Oracle数据库知识概要 Oracle数据库是当前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。它以高级结构化查询语言(SQL)为基础的大型关系数据库,可以独立使用,也可以嵌入...
### Oracle手工创建数据库知识点详解 #### 一、Oracle 手工创建数据库背景及意义 在IT行业中,数据库管理是一项至关重要的任务。Oracle数据库因其高性能、可靠性和安全性而在企业级应用中占据主导地位。掌握如何...
### Data Block 物理结构详解 #### 一、Data Block 物理结构概述 ...通过对上述结构的详细了解,我们可以更好地理解 Oracle 数据块是如何组织和管理数据的,这对于数据库管理员来说是非常重要的基础知识。
Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,它的基础知识对于任何希望在IT领域从事数据库管理工作的人员来说都是至关重要的。以下是一些Oracle基础知识的详细解释: 1. **Oracle初始口令**:在...
Oracle数据库的基础知识和PL/SQL是数据库管理和开发的重要组成部分,它们涉及到数据存储、事务处理、存储过程和触发器等多个方面。以下是对这些知识点的详细解释: 1. 数据文件在Oracle数据库中的关联:一个数据...
一、Oracle+Database+11g+DBA手册(中文) 二、《Oracle数据库SQL执行计划的取得和解析》PPT(附SQL文件) 三、Oracle 常用脚本 ...oracle知识库.CHM SQL语言参考大全.chm SQLCodes-Oracle错误代码与消息解释.chm
- **Free Block 的使用:** Append 模式下的插入操作不会去寻找表中的 free block,而是直接在 High Water Mark (HWM) 上添加数据。这意味着新插入的数据将被放置在表的最后,而不是填充已存在的空闲空间。 ##### 4...
数据在数据库中的最小存储单位是数据块(block),通常为2KB。数据块被组织成连续的数据块集合,称为扩展(extent)。进一步,扩展组成段(segment),段是具有相同结构的对象集合,如表、索引或簇。多个段可以存在...
当一个节点从数据文件中读取block到其db cache时,该block会复制到所有其他节点。如果某个节点的cache被修改,更改会通过集群软件传播到其他节点,最后写入磁盘以保持一致性。 四、ClusterWare组件 1. CRSd:集群...
以下是一些关于Oracle EBS Form开发的重要知识点: 1. **基础开发环境设置**: - 开发者通常需要从服务器下载`TEMPLATE.fmb`作为模板进行开发,该模板位于服务器路径 `/u01/au/11.5.0/forms/US`。 - 为了本地开发...
OracleBlock.java的源代码可能涉及到以下几个关键知识点: 1. **Oracle数据格式**:理解Oracle数据库的数据存储结构,包括数据块、行链接、块内数据组织等。这涉及到Oracle的物理存储机制,如ROWIDs(行标识符)和...