数据块(DATA BLOCK)是Oracle最小的逻辑组成部分。ORACLE存储数据的最小单位。
比Data blocks更高一层的逻辑数据块空间是extent,一个extent是由一系列临近的存储信息的数据块组成。
段(segment)由一系列的extent组成。
表空间(tablespace)是包含物理数据文件的逻辑实体,存放数据库的所有可用数据,因此表空间的尺寸也是包含数据的数据文件尺寸的总和,是oracle 主要的逻辑存储结构。
data block的大小是操作系统的data block的整数倍,ORACLE默认是8K,还有4K,16K,32k几种。
在参数文件里的参数为DB_nK_BLOCK_SIZE,可以通过PCTFREE,PCTUSER,FREELIST进行管理。
extent是几个逻辑上相邻的data block组合在一块。
segment通常一张表是一个segment,一个INDEX,BLOB,CLOB各自占用一个segment。(BLOB就是使用二进制保存数据。CLOB使用CHAR来保存数据。 )
tablespace是数据库中数据逻辑存储的地方,一个tablespace可以包含多个数据文件。上面三个的配置如果和tablespace的配置有冲突,以tablespace为准。
一个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中没有足够的空间去容纳更新后的记录,从而产生了行迁移。对于行迁移来说就非常有调整的必要了,因为这个是可以调整和控制清除的。
原文地址:http://blog.csdn.net/u011492628/article/details/19004481
相关推荐
Oracle数据块结构分析说明BLOCK结构详解,讲解块结构,并且附有实例说明,对块的存储方式进行详细说明
实验4 在内部RAM的BLOCK开始单元中有一带符号数据块,其长度存入LEN.doc
NULL 博文链接:https://hbyuan.iteye.com/blog/850709
Block:一个numpy, PyTorch和beyond的智能块矩阵库
Oracle数据块原理深入理解,带你了解ORACLE底层的知识
Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block)。数据块是数据库中最小的(逻辑)数据单位。与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte)。每种...
block change tracking和rman通常增量备份方式的比较.txt
BlockStore是一个纯原生JavaScript开发,块分配的高速存储键/值文件
JavaScript中Block数据结构的实现。 块-块是结合的二进制数据的blob。 首席维护者 目录 IPLD块JavaScript实现 首席维护者 目录 安装npm 用法 Node.js 例子 浏览器:Browserify,Webpack,其他捆绑软件 浏览器: ...
讲解块结构,并且附有实例说明,对块的存储方式进行详细说明
微块 IDE 使用 Block & MicroPython 对微控制器进行编程。支持 KidBright32 系列、OpenKB、IPST-WiFi 和 TTGO T-Display 未来 使用 Block 和 MicroPython 代码进行编程 不可用时自动检查并上传 MicroPython 使用...
使用方块编码技术,压缩图像数据,完全用数学方法编写,没有调用函数。
在 Siemens 工控系统中,DB 块(Data Block)是存储数据的基本单元。S7-1200 和 S7-1500 是 Siemens 的两种常见的 PLC 型号,分别具有不同的 DB 块类型。在 TIA Portal V12 中,为 S7-1200/S7-1500 CPU 添加一个 DB ...
针对这些缺点,提出了一种基于二叉树搜索的多密集块检测方法(DDB-BST),通过对张量数据进行基于评价指标的局部搜索,找到评价指标最高的子张量数据,将数据分成左右子节点,通过不断比较父节点和左右子节点评价...
STEP7-FB-块解密
Linux块设备驱动基本程序 自己实现bio操作 分区实验与改进测试
DB:数据块,英文名Data block。从字面含义便知主要用于储存用户数据,比如模拟量转换数据,相当于200里面的V区,欧姆龙PLC的W区。 FC:函数,英文名Function。我们常常在FC函数中写一些需要重复执行的代码,可以在...
BBED(Oracle Block Brower and EDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用。
此SCSI Block Commands - 3 (SBC-3) 是一种 SCSI 标准,专门用于定义和规范块设备的命令和操作。块设备通常是存储设备,如硬盘驱动器和固态硬盘,这些设备以块为单位读写数据。SBC-3 标准包括了一组命令、数据传输...
在可视化的界面中各种数据源下数据都成为资源编辑器中Data Block™(数据块),用户通过鼠标的拖拽可以把数据块搭建成自己需要的数据集。在搭建过程中用户可以随时浏览搭建的数据块中的数据。这些数据块可以被复制,...