加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle块,区,段

发布时间:2020-12-30 18:20:27 所属栏目:站长百科 来源:网络整理
导读:数据块( Block ) 数据块 Block 是 Oracle 存储数据信息的最小单位。注意,这里说的是 Oracle 环境下的最小单位。 Oracle 也就是通过数据块来屏蔽不同操作系统存储结构的差异。无论是 Windows 环境,还是 Unix/Linux 环境,他们的操作系统存储结构和方式、
副标题[/!--empirenews.page--]

数据块(Block

数据块BlockOracle存储数据信息的最小单位。注意,这里说的是Oracle环境下的最小单位。Oracle也就是通过数据块来屏蔽不同操作系统存储结构的差异。无论是Windows环境,还是Unix/Linux环境,他们的操作系统存储结构和方式、甚至字符排列的方式都是不同的。Oracle利用数据块将这些差异加以屏蔽,全部数据操作采用对Oracle块的操作,相当于是一个层次的抽象。

Oracle所有对数据的操作和空间分配,实际上都是针对数据块Block的操作。我们从数据表中搜索出一行,实际中Oracle就会从内存缓冲区(或者硬盘)中读取到该行所在的数据块,再返回这数据块上的指定数据行。Oracle无论是在缓冲区,还是在硬盘,进行数据操作的最小单位也就是数据块。

数据块是有大小的,在一个数据库建立的时候,通过参数进行设置。注意,在Oracle数据库参数中,只有数据块大小的参数是建库之后不能进行修改的。数据块的大小,在一个数据库中可以支持多个,但是一般没有太大的意义,会给管理和调试带来一定的负担。

数据块的大小是通过kb字节个数来指定的,默认为8KB。相关参数为db_block_size,下面是查看block大小的语句。

SQL> show parameter db_block_size;

NAME??????????????????????????????? TYPE?????? VALUE

------------------------------------ ----------- ------------------------------

db_block_size?????????????????????? integer??? 8192 //1024×8

设置数据块的大小是依据不同类型的系统的。如果数据块设置比较大,那么一次读取的数据行较多,相应对SGA内存消耗比较大,特定查询引发的换入换出可能较多。如果设置的过小,频繁的IO逻辑物理读也会引起性能问题。

与数据块有关系的另一个参数就是db_file_multiblock_read_count,表示一次从物理存储中读取的数据块数量。对一些数据挖掘系统,可以考虑调节此参数略大一些。

接下来,我们看比block更高的一个单位,区extent

extent

extent是比数据块大一级的存储结构,表示的是一连串连续的数据块集合。我们知道,物理存储通常是随机的读写过程。即使在同一个文件里,我们也不能保证相同的一个信息是存储在绝对连续的物理存储空间的。Oracle数据存储同样如此。

在进行存储数据信息的时候,Oracle将分配数据块进行存储,但是不能保证所有分配的数据块都是连续的结构。所以,出现分区extent的概念,表示一系列连续的数据块集合。

视图dba_extents(或者all_extentsuser_extents)是我们研究分区结构和存储构成的重要手段。

SQL> desc dba_extents;

Name?????????? Type??????? Nullable Default Comments????????????????????????????????????????????????

--------------- ------------ -------- ------- ---------------------------------------------------------

OWNER????????? VARCHAR2(30) Y??????? Owner of the segment associated with the extent?????????

SEGMENT_NAME?? VARCHAR2(81) Y??????? Name of the segment associated with the extent??????????

PARTITION_NAME VARCHAR2(30) Y??????? Partition/Subpartition Name,if any,of the segment?????

SEGMENT_TYPE?? VARCHAR2(18) Y??????? Type of the segment?????????????????????????????????????

TABLESPACE_NAME VARCHAR2(30) Y??????? Name of the tablespace containing the extent????????????

EXTENT_ID????? NUMBER????? Y??????? Extent number in the segment????????????????????????????

FILE_ID??????? NUMBER????? Y??????? Name of the file containing the extent??????????????????

BLOCK_ID?????? NUMBER????? Y??????? Starting block number of the extent?????????????????????

BYTES????????? NUMBER????? Y??????? Size of the extent in bytes?????????????????????????????

BLOCKS???????? NUMBER????? Y??????? Size of the extent in ORACLE blocks?????????????????????

RELATIVE_FNO?? NUMBER????? Y??????? Relative number of the file containing the segment header

从视图中,我们可以清晰看出分区的几个特点。

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读