oracle的逻辑结构-extend,segment

2022-05-07  本文已影响0人  扫地专业高级研究生

数据库版本:oracle12c

在没有数据库之前,数据以文件保存,那个时候数据看起来紊乱,磁盘就像是一片有待开发的荒原,被计算机使用者们随意的开辟然后放下任何东西,数据之间没有任何的联系,数据也缺乏管理,导致数据出现冗余,查找困难,目录结构复杂等。就像把一片青青草原开辟成了一个垃圾场,随意地丢弃东西在里面。使用者们就像懒于打扫卫生整理房间的主人,把房间搞得乱七八糟,东西到处都是。这样的后果就是,我们不断的新增东西,当忘记有某个东西的时候又重新购买,物件越来越多,最后导致整个房间装满,整个世界崩溃,不堪重负。那个时候,就会明白善于整理空间是多么的重要,善于整理时间也同样显现出端倪,终究的,时间的积累最后都反映在了空间的变化。

而数据库出现之后,这种不善于整理空间的情况得到了缓解,虽然很多时候我们仍然在数据库中保留很多的冗余的无用的数据,但数据库解决的并不是人们面对冗余的问题,而是解决了人们对空间的一种思考方式。空间他是分割的,是有序的,是能够清晰反映在我们面前的,我们必须按照一定的规则来组织我们的空间关系。而这个关系的基础就是,数据库的逻辑结构。

tablespace,segment,extend,block这样由大到小的向下管理,关系型数据库赋予了数据人的思维含义(让他看起来更像一个实体,er模型是一个好的概念设计工具),在这些数据库提供的约束或者规范下,使用数据库的人,即便不善于管理空间,也开始认识到数据的空间是如果被结构化的组织成了一张张表,一行行数据,一个个字段,这是一个奇妙的思维方式的改变,他让数据逃离了蛮荒的草原,而存在于一个个规范的格子中。

当我们要使用数据库的时候,我们要建一个数据空间,要建立一张表。在执行这些动作的背后,数据库新建了一个表空间的文件,以及我们还可以通过数据库字典工具查询到那个表的segment段,他有多少个extend区,以及具体到分配了多少个block给他,甚至他占用了多少的bytes我们都可以知道得清清楚楚,我们可以通过一个统一的入口,能够知道数据库的一切,我们能够把握数据库的所有的统计信息,他扁平化的表目录等等。他不像文件系统那个分多个目录,而只是用一个简单的4个级别的逻辑结构就将整个数据表示清楚。

extend区,在我们新建一个表的时候,它就会被指定给他,一般初始8个块,也就是8192byte的大小,我们便可以开始在每个block中存数据,extend也分头和数据区。它是一个更大级别的空间开辟方式,在一个extend用完后,他可以让数据库直接再开辟8192个区给他。

segment代表的是段,一般一个段就是一个表,他只能由ddl语言进行操作,只能进行create,drop,alter操作,dsl语言不能操作segment,他在技术上一个屏蔽方案,他区分每个表,同时他让操作数据库的语言变得规范,又或者说是因为有了segment这个设计概念,才有了ddl,言之总得有物,不能空谈。

extend的含义实际上只是一个中间方案,它仅仅在数据库内部作为一个空间开辟的结构,并不对外暴露,甚至在数据库内部,extend本身更像是一个不上不下的,默认的约定俗成的规则,人们都知道他重要,但人们也都知道他总是一层不变。

上一篇下一篇

猜你喜欢

热点阅读