Oracle空间管理

1 Oracle Space Management

在这里插入图片描述
[本地管理(平衡二叉树)] | [字典管理]
在这里插入图片描述

2 逻辑和物理结构

Oracle Database Architecture
Data Blocks, Extents, and Segments
Part V Oracle Database Storage Structures

3 Tablespace

Temp
Sysaux
用户&表空间
smallfile VS bigfile
Managing Database Storage Structures

4 Segment

4.1 MSSM(Freelist)

①freelist:空闲列表中登记了可以插入数据的可用块,位置在段头,插入表行数据时首先查找该列表。

②pctfree:用来为一个块保留的空间百分比,以防止在今后的更新操作中增加一列或多列值的长度。达到该值,从 freelist 清除该块信息。

③pctused:一个块的使用水位的百分比,这个水位将使该块返回到可用列表中去等待更多的插入操作。达到该值,该块信息记录到 freelist。这个参数在 ASSM 下不使用。

ASSM 使用位图状态位取代了 pctused

4.2 ASSM(Bitmap)

5 Extent

5.1 Dictionary Manager 字典管理

5.2 Locl Manager 本地管理

5.2.1 uniform [size x] 统一区大小表空间

统一区大小表空间和区的使用

当段的大小超过64MB时,区大小为8MB。在使用统一区大小时,也可以将所有区都固定为8MB。

很多数据库都使用统一区大小,而且其大小为1MB。原因 操作系统中,一次I/O操作的最大的读、写数据量是1MB。即使使用8MB的区,一个区也必须分8次进行I/O操作,超过1MB的区大小,并不能减少I/O操作的次数。

但是,8MB的区连续的空间更多。读取8MB内的第1MB和第2MB数据虽然必须要分两次I/O操作,但这两次I/O操作很可能是连续I/O,因为第1MB和第2MB数据有可能是相连的。如果区大小仅为1MB,虽然读取表的第1区和第2区也是两次I/O操作,但这两次I/O操作很可能不相连,是随机I/O操作。连续I/O操作的性能当然比随机I/O操作的要高。因此,出于全表扫描性能的考虑,即使使用统一区大小,大点的区(如8MB大小)是很合适的选择。

db_file_multiblock_read_count

5.2.2 autoallocate 系统管理区大小表空间

系统管理区大小

空间的利用率上讲,小区节省空间,大区可能会浪费空间。比如,当区大小是10MB时,为一个表分配了一个10MB的区,哪怕它只使用了这10MB中的1个字节,这10MB空间也完全属于这个表了,其他表无法再使用这部分空间。从这个角度上讲,小区的空间利用率无疑是高的。但从性能角度上讲,对于随机访问,大区、小区没有影响。但对于全表扫描这样的操作,大区又是更合适的。因为连续空间更多,可以减少磁头在区间的定位。在系统管理区大小的方式下,当表比较小时,区也比较小,当表大时,区也随之变大,这种方式无疑可以在空间的利用率、全扫描的性能之间找到一种平衡。因此建议大多数情况下,都可以采用系统管理区大小的方式。除非有某个表,已明确地知道它会很大,为了保证全扫描的性能,直接建一个统一区大小,并且区比较大的表空间,以便将表存放其中。

6 Block

7 系统表

dba_tablespaces

col segment_space_management format a30
select tablespace_name, segment_space_management, extent_management, block_size/1024 from dba_tablespaces;

在这里插入图片描述

dba_segments

col segment_name format a40
select tablespace_name, segment_name, segment_type, extents, blocks from dba_segments;

在这里插入图片描述

select tablespace_name, distinct segment_type from dba_segments;

在这里插入图片描述

dba_extents

select tablespace_name, segment_name, extent_id, block_id from dba_extents;

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值