数据库中表空间、段、区、块是什么意思

63次阅读
没有评论

共计 1956 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章主要介绍数据库中表空间、段、区、块是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、数据块(Block)

简介

数据块 Block 是 Oracle 存储数据信息的最小单位。注意,这里说的是 Oracle 环境下的最小单位。Oracle 也就是通过数据块来屏蔽不同操作系统存储结构的差异。无论是他们的存储结构和方式、甚至字符排列的方式。

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

参数

1、db_block_size

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

数据块的大小是通过 kb 字节个数来指定的,默认为 8KB。相关参数为 db_block_size。

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

2、db_file_multiblock_read_count

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

二、区 extent

简介

区 extent 是比数据块大一级的存储结构,表示的是一连串连续的数据块集合。

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

视图

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

1、分区是带有段特定性的。数据段 segment 是分区的上层组织单位,一个数据库对象对应一个 segement,数据库对象是归属在不同的 schema(owner)上的。所以,通过不同的数据段名称、不同的 owner,乃至不同的 tablespace 表空间信息,就可以定位到数据区 extent 的信息描述。

2、另一部分信息是关于该区 extent 的分配信息,如所在文件编号,起始数据块 block 编号和数据块数量等内容。

三、数据段 segment

简介

数据段是与数据库对象相对应,一般一个数据库对象对应一个数据段。多个 extent 是对应一个数据段,每个数据段实际上就是数据库一个对象的代表。

视图

从 dba_segments 视图中,可以比较清楚看清数据段的结构。

1、从 segment_type 列的 comment 信息中,可以看出数据段的类型是多样的。数据表、索引、回滚、聚集这些都是数据段的一种表现形式。同时,数据段是在数据对象创建的时候就已经创建出来,随着对象体积的增大,而不断分配多个 extents 进行管理。

2、另一部分信息可以从 dba_segments 中读出的,就是该数据对象分配的空间大小和数据块、分区个数。使用这个视图,可以方便的获取到指定 schema 的所有对象大小。

SELECT OWNER,

 SUM(BYTES) / 1024 / 1024 AS VOL,

 SUM(BLOCKS) AS TOTALBLOCKS,

 SUM(EXTENTS) AS TOTALEXTENTS

 FROM DBA_SEGMENTS

 GROUP BY OWNER

HAVING OWNER = SYS

一个数据对象对应一个 segment。但是,分区表的时候,一个分区要对应一个 segment 对象。还有就是,segment 对象是可以指定存储在那个表空间里,实现存储划分的基础也就在于此。不同类型的 segment 划分建立在不同的表空间里,才有可能存放在不同的文件中,最后分布在不同的物理存储。

四、表空间 tablespace

简介

TableSpace 是存储结构中的最高层结构。建立一个表空间的时候,是需要指定存储的文件。一个表空间可以指定多个数据文件,多个文件可以在不同的物理存储上。但是有一点就是,表空间下一级对象数据段的存储,是不能指定存储在那个文件里的。所以,要想让数据对象访问 IO 负载均衡,需要指定不同的数据对象在不同的表空间里。这也就是为什么将数据表和索引建立在不同的表空间的原因。

视图

表空间通过 v$tablespace 进行访问。

数据文件通过 v$datafile 进行访问

以上是“数据库中表空间、段、区、块是什么意思”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计1956字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)