数据块的内容和参数

数据块由3部分组成:块头部分、空闲区、数据区。随着数据量的增加,块头部分从上而下占据空闲区而数据区从下而上占据空闲区。当两部分接触时数据块就满了。

数据区:存储的是数据行,当插入数据时从下而上占据空闲区

块头部分:存储数据块的地址、表目录、行目录和事务槽,事务槽是在事务修改数据行时使用。头部从上而下占据空闲区

空闲区:位于数据块的中部,初始化时是连续的。但是随着删除修改操作使得空闲区碎片化。oracle服务器会根据需要合并空闲区。

一、oracle引入4个参数管理数据块

1、控制并行操作的参数:initrans、maxtrans

  数据块中每一个数据行的头部有一个锁位,该锁位记录了该数据行在事务中所使用的事务槽号。而事务槽在数据块的头部中,有关事务的控制信息放在事务槽中

  oracle服务器是通过每一行的锁位中的事务槽号在数据块头中找到对应的事务槽,并利用该槽中的信息来完成该行的事务控制。

  事务槽是用来存储与当前改变数据块的事务有关的信息,每一个事务只能使用一个事务槽即使这个事务正在修改多行数据或者多行索引记录。

  initrans:定义了创建数据块或者索引块时事务槽的初始值,用来保证最低水平的并行操作

  maxtrans:定义了创建数据块或者索引块时事务槽的最大值。随着并行事务的增加,数据块头部中的事务槽个数也要增加。该值规定了事务槽个数的上限。

注:并行操作和数据块的空间利用率是矛盾的,如果initrans和maxtrans值过大,这样增加了事务的并行数系统的效率也提高了,但是数据块头部中的事务槽个数增加导致数据区容量的减小。如果没有必要不要改变他们的默认值。

2、控制数据空间使用的参数:

pctfree和pctused

二、oracle一共提供了两种管理数据块的方法:手动管理和自动的段空间管理

  (一)手工数据块的管理

    手工的数据块管理是oracle的默认空间管理方式,oracle通过修改一下参数来手工配置数据块以便更有效的管理和控制磁盘空间的使用情况

    1、pctfree:定义在数据块中预留空间的百分比,这部分数据空间只是在数据块中的数据行进行修改操作而造成的空间增长时使用的

    2、pctused;定义数据块中已经使用的空间的百分比,只有当数据块中使用的空间的百分比小于该值时oracle才将这一数据块放入空闲队列

    3、freelists:用来在一个段中定义空闲队列的个数,空闲队列是一个数据块的列表这些数据块将被用作插入操作的候选数据块。

    例;当设置pctfree=15,pctused=30时oracle服务器的空间分配操作如下:

      1、在进行数据的插入操作时,oracle服务器要保留数据块空间总数的15%的空闲空间,为将来可能的修改操作造成的扩容使用

      2、当空闲空间小于或等于15%时,oracle服务器将该数据块从空闲队列中去掉,该块不能再进行插入操作。

      3、如果进行了删除或者修改操作造成数据行的缩小释放磁盘空间,虽然空闲空间大于15%但是所使用的空间大于30%,该块仍然不能进行插入操作。

      4、只有当使用的空间小于pctused= 30%时,该块才被重新被放入空闲队列中,允许插入操作。

      注:引入pctfree和pctused的目的是避免造成系统的颠簸,因此数据块要空到一定的程度才能被插入数据。如果仅使用一个参数pctfree那么当空闲空间大于15%假如                       为16%时,那么又可以被重新的插入数据,一旦插入数据使得空闲空间小于15%,又再次被从空闲队列中移除,这样的情况可能经常的发生也就是所谓的系统         颠簸。oracle的默认参数pctfree,pctused,freelists在不是必须的情况下尽量不要修改,因为oracle的多数参数是相互关联的,一旦修改不善就会造成系统的效                       率低下。

  (二)自动的段空间管理

    该方法不是使用空闲队列而是使用位图来追踪段中的空闲和使用的数据块。该方法是优点如下:

      1、管理上的方便,pctfree和freelists都是自动管理的

      2、较好的空间利用率

      3、并行插入操作的性能有较大的改进

    配置自动的段管理的方法只能在表空间一级生效,而且是本地管理的表空间才能开启自动的段管理,并且该配置应用于该表空间下的所有的段。

    在创建表空间时使用segment space management auto子句就可以完成自动的段空间管理配置

    自动管理的段可以使普通的表、索引、也可以是索引表还可以是大对象段。

注:获取段的磁盘管理信息的数据字典主要有:dba_tablespaces、dba_data_files、dba_extents、dba_segments、dba_free_space.

总结:oracle数据块:oracle最小的存储单元,oracle数据块是数据库系统

数据块的内容和参数

时间: 2024-11-08 21:57:17

数据块的内容和参数的相关文章

oracle 数据块介绍 1

ORACLE DATA BLOCK oracle data block是数据库管理数据文件的最小单元. 在物理层面,oracle data file保存在操作系统上,最小i/o单元是操作系统块,oracle data block是oracle db逻辑最小i/o单元,其结构和系统块不同,大小是系统块的整数倍,如图: DATA BLOCK SIZE oracle db都会配置db_block_size参数,在建库时确定oracle db的默认data block size的大小.建库后数据库默认数

5.oracle的dump理解五 数据块理论

5.oracle的dump理解五 数据块理论 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51228514 前两篇描述了我们在操作层面看到的一些东西,但是没有理论指导,看到越多我们只会越迷糊.所以,蛤蟆从官方文档上摘取一些老少皆宜的内容来补脑. 块是数据块IO的最小单位. 1     数据块和操作系统块 从物理层面,数据库的块存储时候是由操作系统块组成.操作系统块是操作系统可以读写的最小数据单位.ORACLE块是一个逻辑存

Oracle数据块实现原理深入解读(转)

Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block).数据块是数据库中最小的(逻辑)数据单位.与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte).每种操作系统都有一个被称为块容量(block size)的参数.Oracle每次获取数据时,总是访问整数个(Oracle)数据块,而不是按照操作系统块的容量访问数据. 数据库中标准的数据块(data block)容量是由初始化参数 DB_BLOCK_SIZE指定的.除此之外,用

[转]Oracle数据块体系的详细介绍

数据块概述Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block).数据块是数据库中最小的(逻辑)数据单位.与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte).每种操作系统都有一个被称为块容量(block size)的参数.Oracle每次获取数据时,总是访问整个数(Oracle)数据块,而不是按照操作系统块的容量访问数据. 数据库中标准的数据块(data block)容量是由初始化参数 DB_BLOCK_SIZE 指定的.

通过案例学调优之--Oracle数据块(block)

数据块概述Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block).数据块是数据库中最小的(逻辑)数据单位.与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte).每种操作系统都有一个被称为块容量(block size)的参数.Oracle每次获取数据时,总是访问整个数(Oracle)数据块,而不是按照操作系统块的容量访问数据. 数据库中标准的数据块(data block)容量是由初始化参数 DB_BLOCK_SIZE 指定的.

Oracle 数据块损坏与恢复详解

1.什么是块损坏: 所谓损坏的数据块,是指块没有采用可识别的 Oracle 格式,或者其内容在内部不一致.通常情况下,损坏是由硬件故障或操作系统问题引起的.Oracle 数据库将损坏的块标识为"逻辑损坏"或"介质损坏".如果是逻辑损坏,则是 Oracle 内部错误.Oracle 数据库检测到不一致之后,就将逻辑损坏的块标记为损坏.如果是介质损坏,则是块格式不正确:从磁盘读取的块不包含有意义的信息. 通过恢复块,或者删除包含损坏块的数据库对象(或同时采用这两种方式),

HDFS源码分析数据块校验之DataBlockScanner

DataBlockScanner是运行在数据节点DataNode上的一个后台线程.它为所有的块池管理块扫描.针对每个块池,一个BlockPoolSliceScanner对象将会被创建,其运行在一个单独的线程中,为该块池扫描.校验数据块.当一个BPOfferService服务变成活跃或死亡状态,该类中的blockPoolScannerMap将会更新. 我们先看下DataBlockScanner的成员变量,如下: // 所属数据节点DataNode实例 private final DataNode

西门子PLC学习笔记十五-(数据块及数据访问方式)

一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的. 数据块分共享数据块.背景数据块.用户自定义数据块,下面分别介绍. 1.共享数据块(全局数据块) 其用于存储全局数据,所有逻辑块(OB.FC.FB)都可以访问共享数据块中的数据. 2.背景数据块(私有存储区) 其用做功能块(FB)的"存储器".FB的参数和静态变量安排在它的背景数据块中.

Oracle 数据块

以emp表为例 [email protected] prod>select * from scott.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- ------------------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20 7499