Oracle的体系结构(六)

Oracle的存储结构分为逻辑结构和物理结构。

逻辑结构,有四层,表空间(tablespace),段(segment),区(extent),块(block)。任何的一本关于Oracle的入门书籍都会告诉你,但是却甚少解释,为什么是4层,三层行不行,每一层存在的意义在哪里?

block是Oracle最小的存储与I/O单位,这与buffer cache的存储单位是对应的。通常一个Oracle 块是2^n倍于OS块大小。现在主流的关系型数据基本都是这样的设计的,只是可能名字有些不同,有些叫块(block),有些叫页(page)。这种设计的目的在于获得更好的I/O吞吐量。

区(extent)是最小的分配单位,也就是说,当需要为对象分配更多的存储空间是,不是一个block一个block来分配,而是一个extent,甚至更多extent来分配的。区的存在是为了多块读I/O。

做开发的人,不会关心segment,他们关心的更多是table,index,这样一些对象。通常问,表或者索引和segment有什么关系。一个表可能对于一个segment(比如emp),一个表可能对于多个segment(比如分区表,比如有LOB对象的表)。

tablespace的存在,可能更多的是为了屏蔽平台或者存储的差异性。

思考:一个Oracle block是否只能存放一个表的数据?

-- 待续

你可能感兴趣的:(Oracle的体系结构(六))