区的结构:
对于11g来说,
存储表时,假设是从128号块开始的(可以从dba_extents的block_id中查到),那么0-127号块则可能是文件头,这前128块中又分为两部分,0-1号块是真正的文件头,2-127号块是位图块,位图块是用来记录表空间中区的分配情况的。
位图块又分为位图头(上面的2号位,可以在dump文件中找到它的说明:bitmapped file space header)和位图数据(上面的3-127号位,可以在dump文件中找到它的说明:bitmapped file space bitmap)

区的分配
区是表空间中最基本的单位,数据字典:DBA_EXTENTS
区由两种设定方式:①统一区大小表空间系统管理区大小表空间
(1)统一区大小表空间
设定区大小为一个统一的值

create tablespace space1 datafile '/u01/data/space1_01.dbf' size
50m uniform size 1m;

上面的代码的是建立了一个统一区大小的额表空间,区的大小都是1m

(2)系统管理区大小

create tablespace space2 datafile '/u01/data/space2_01.dbf' size 
50m reuse;

blocks会根据表的大小进行调整,表小于1mb,每个区大小为8个块,表大于1mb时,大于1mb的部分,每个区是128块。

区的使用
对于空间利用率来说:区越小,空间利用率越高
对于性能来说:区越大越好,因为连续的存储对于表扫描读取io友好

系统管理区:可能在空间利用和性能之间找到一种平衡,大多数情况下,推荐使用它。
统一区大小:假如你已经知道某张表很大,为了提高扫描性能,则可以使用统一区大小表空间

区的碎片
统一区大小表空间:不会出现碎片,因为每个区的大小一致,也就是以为这表的存储划分一致,也就不会产生碎片。
系统管理区:会产生碎片,假如,有很多64kb的空闲区,互相不连续,当需要1mb、8mb大小的区是,这些不连续的区无法被重用,就会有了碎片,不过可以忽略,因为表创建后很少会对它进行drop、truncate操作,没有频繁的分配释放操作,碎片就很少出现了。
~2020-07-27写

posted on 2022-05-16 19:07  xc川  阅读(60)  评论(0)    收藏  举报